2014-09-04 120 views
2

我注意到,在Eclipse中爲項目添加本地支持時,它會生成一個jni/libs /文件夾。什麼是這個文件夾,它是如何使用的,因爲我無法在NDK文檔中找到它。什麼是jni/libs文件夾?

從NDK文檔,

您的預建的共享庫的副本將被複制到 $ PROJECT/OBJ /本地,而另一個將被複制和剝離成 $ PROJECT /庫/(ABI )。

我注意到當做一個ndk-build時,這個目錄被清理出來,並且有幾個庫被放進去。但是,通常情況並非如此,$ Project/jni/libs中的庫匹配$ Project/libs。另外,當我安裝應用程序時,似乎沒有引用jni/libs。

jni/libs只是ndk-build使用的臨時文件夾嗎?它在任何地方都有記錄,或者這是使用Eclipse進行本地支持的遺蹟嗎?

+0

「jni/libs」似乎有點奇怪。通常jni /將包含本地庫的* source *代碼(或者至少是查找它的指令),而libs /將包含結果,中間階段和最終的.so輸出。有沒有可能你無意中有eclipse *無用*爲開發主機構建jni代碼(就好像你在做非常規的非android java工作),並行於ndk *有用*爲你的android目標構建它? – 2014-09-08 19:52:04

+0

在您點擊_Add Native Support_之前,您的項目是否有'jni/Android.mk' ***? – 2014-09-08 20:31:29

+0

@AlexCohn沒有jni文件夾,除非你手動添加一個或者單擊添加本機支持 – stevebot 2014-09-08 20:36:34

回答

2

jni/libs文件夾是您的共享庫文件是從C/C++源生成的。您的本機代碼被編譯並根據您曾在application.mk文件中設置的參數

APP_ABI: = <all | x86 | armv7a | armeabi-v7 | mips> 

相應libs.so文件生成和值JNI/libs文件夾的地方。這些lib文件捆綁到您的最終apk文件,並在需要時由您的應用程序引用。這不是一個臨時文件夾,來自該文件夾的文件會進入最終的apk文件。

+0

謝謝,但我沒有在NDK文檔中看到這個,而是我看到NDK文檔引用$ PROJECT/libs/abi作爲文件夾進入你的apk。 – stevebot 2014-09-08 18:33:25

+0

abi是指x86,arm,mips等。爲每個體系結構創建不同的文件夾。 – G3M 2014-09-08 18:56:07

+0

是的,我知道,但是我沒有看到NDK文檔中提到的jni/libs,只提及$ PROJECT/libs。 – stevebot 2014-09-08 20:35:35

相關問題