2014-03-28 37 views
0

我參考Hello-JNI的項目,HelloJni.java中有System.loadLibrary("hello-jni");我如何知道應該在Android中的JNI中添加哪些庫?

但我在Hello-JNI項目中沒有看到任何庫調用hello-jni

Hello-jni的項目就像下面的圖片一樣。

enter image description here

它表明類似的描述如下:

/* this is used to load the 'hello-jni' library on application 
    * startup. The library has already been unpacked into 
    * /data/data/com.example.hellojni/lib/libhello-jni.so at 
    * installation time by the package manager. 
    */ 

The question 1:

爲什麼加載hello-jni librarieshello-jni libraries在哪裏?

The question 2:

我怎麼知道哪些庫,我要補充的System.loadLibrary如果我只有.so文件?

The question 3:

,如果我有庫在庫/ xxx.jar,我WIRTE System.loadLibrary("hello-jni"); 權後,它可以工作?

回答

1

1)編譯過程將.so文件創建爲libs/architecture/目錄。他們將全部包含在apk中。

2)我不認爲NDK庫會在「libs」以外的目錄中讀取(當創建apk時,它會在apk中重命名爲「lib」)或jar中。

+0

1)在'/libs/armeabi'...和**中只有'libhello-jni.so'我的問題是如何通過使用System.loadLibrary加載庫,如果我只有.so文件?* * – Martin

+1

'loadLibrary'自動預裝「lib」。此外,它知道要查找的路徑。所以'System.loadLibrary(「hello-jni」)'會找到你的庫。 –

+1

當您構建apk時,/ libs/armeabi中的.so文件將自動**放入apk中的/ lib目錄中。當您調用loadLibrary時,系統將自動**查看該目錄。 – Juggernaut93

相關問題