問題:
我有一個編譯爲x86和手臂,armv7a原生Android應用程序。
該應用程序還鏈接到預共享庫。
該預共享庫也針對x86,arm和armv7a進行了編譯。所以有3個lib.so文件。鏈接跨平臺庫原生的Android應用程序
我必須在Android.mk/Application.mk做些什麼來鏈接到相應的*給它被編譯爲架構.so文件?
也就是說,當構建系統是一種編譯手臂,它應該鏈接到庫/ armeabi/lib.so。
同樣,當構建系統編譯爲X86,它應該使用庫/ 86/lib.so文件。
相信替代可能是一個更復雜的生成腳本,但我拍攝了簡單的解決方案首先,如果存在的話。 謝謝!
答案 不幸的是我的查詢技能不是很好,發佈後不久,我發現了問題和答案已經在SO:
How can i Link prebuilt shared Library to Android NDK project?
總結:
預建的共享庫,編譯不同的平臺,都應該被命名爲相同的並且在jni/$ {ARCH} /目錄下。
也就是說,結構應顯示爲這樣: JNI/86/libtest.so JNI/armeabi/libtest.so JNI/armeabi-V7A/libtest.so
如果使用LOCAL_MODULE名化妝的Android下基於JNI/{}拱平臺將自動拿起庫。然而,我更喜歡你的解決方案,因爲它向開發人員展示了什麼正在被燒入庫中。 – Cookster