2016-05-30 5 views
0

私は2つの別々の共有ライブラリを使って通常のgradleでうまく動作するプロジェクトを持っていました。私は、次のGradleのコマンドを使用してライブラリを含むました:既存のNDKプロジェクトにプリコンパイル済み共有ライブラリを追加するにはどうすればよいですか?

sourceSets.main 
     { 
      jni.srcDirs = []// This means that ndk-build.cmd needs to be invoked from command line 
      jniLibs.srcDirs "src/main/libs" //include other libraries 
     } 

私は2つのライブラリの1コンパイルを開始するために必要なので、私は実験のGradleへ移動しました。私はこれを構築している図書館でうまく動作させるようにしました。しかし、コンパイル済みの共有ライブラリを追加すると、java.lang.UnsatisfiedLinkErrorのクラッシュが発生しています。JNIメソッドの実装が見つかりませんでした。私はパッケージ名や共有ライブラリを変更していません。

私は

jar xvf app-release.apk 

を実行すると、私は、ファイルのリストで私の共有ライブラリ存在を参照してください、構築APKによってピックアップされています。ライブラリがAPK内にある場合、UnsatisfiedLinkErrorのソースは何ですか?事前作成された.soファイルをNDKプロジェクトに含める手順は何ですか。 NDKプロジェクトコードは、余分なライブラリを呼び出すのではなく、Javaコードのみを呼び出します。

答えて

0

ライブラリをJavaコードから手動でロードする必要があります。 loadLibraryは1を投げることができるよう

System.loadLibrary("yourlib"); 

は、例外を処理することを忘れないでください。例外メッセージがあなたの共有ライブラリを見つけようとしたパスを表示するので、重要です。また、ライブラリがapkに追加されていることを確認してください。 armeabiライブラリはx86電話では動作しないため、共有ライブラリを別のABI用にコンパイルしてください。

Hereあなたのプロジェクトにgradle-experimentalプラグインを使ってライブラリを追加する例が見つかりますので、apkに追加されます。

関連する問題