2

問題:

x86 およびアーム、armv7a 用にコンパイルされたネイティブ Android アプリケーションがあります。
このアプリは、事前共有ライブラリにもリンクしています。
その事前共有ライブラリは、x86、arm、および armv7a 用にもコンパイルされています。したがって、3 つの lib.so ファイルがあります。

Android.mk/Application.mk で、コンパイル対象のアーキテクチャに応じて適切な *.so ファイルにリンクするには、どうすればよいですか?

つまり、ビルド システムが arm 用にコンパイルされている場合、libs/armeabi/lib.so にリンクする必要があります。
同様に、ビルド システムが x86 用にコンパイルする場合、libs/x86/lib.so ファイルを使用する必要があります。

代替案はより複雑なビルド スクリプトになる可能性があると思いますが、単純な解決策が存在する場合は、最初にそれを目指しています。ありがとう!

残念ながら、私のクエリ スキルはあまり良くなく、投稿後すぐに、SO: How can i Link prebuilt shared Library to Android NDK project? に既に質問と回答が見つかりました。

要約する
と、さまざまなプラットフォーム用にコンパイルされたビルド済みの共有ライブラリは、すべて同じ名前で jni/${ARCH}/ ディレクトリに配置する必要があります。

つまり、構造は次のようになります。 jni/x86/libtest.so jni/armeabi/libtest.so jni/armeabi-v7a/libtest.so

4

1 に答える 1