2016-05-30 78 views
0

我有一個項目正常工作,使用兩個獨立的共享庫正常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 
     } 

我需要開始編譯兩個文庫中的一個,所以移動到的gradle實驗。我得到這個適合我正在建設的圖書館工作。但是,當我去添加預編譯的共享庫時,我得到了java.lang.UnsatisfiedLinkError的崩潰:沒有爲我的JNI方法找到實現。我沒有更改軟件包名稱或共享庫。

當我運行

jar xvf app-release.apk 

我看到我的共享出現在文件列表庫,所以它被拾起的APK建設。如果圖書館在APK中,那麼可能是UnsatisfiedLinkError的來源?將預建的.so文件包含到NDK項目中的步驟是什麼? NDK項目代碼不會調用額外的庫,只會調用java代碼。

回答

0

您應該從Java代碼手動加載您的庫。

System.loadLibrary("yourlib"); 

不要忘記處理異常,因爲loadLibrary可以拋出一個。這很重要,因爲異常消息會顯示路徑,它試圖找到您的共享庫。另外可以肯定,你的圖書館已經加入你的apk。然後,確保你的共享庫是針對不同的ABI編譯的,因爲armeabi庫不能在x86手機上工作。

Here你可以找到一個使用gradle-experimental插件添加庫到你的項目的例子,所以它會被添加到你的apk

相關問題