我已經採用了本地活動的工作示例,並且我試圖在main()中添加一個調用到已編譯的.so文件中可用的函數。如何使用Android Studio 1.3和Gradle插件包含多個共享庫?
我已經將.so放在自己的ABI文件夾下的jniLibs中,然後將庫名添加到我的gradle構建文件中。
android.ndk {
moduleName ="native-activity"
CFlags += "-I${file("src/main/jni/native_app_glue")}".toString()
ldLibs += ["log", "android", "EGL", "GLESv1_CM", "mylib"]
}
ldLibs的額外變化使得代碼可以編譯。所以它找到了圖書館。當我檢查apk時,它的所有內容都在正確的ABI下(適用於Nexus 5設備的armeabi-v7a)。
奇怪的是,當我從命令行使用gradle時,出現以下錯誤消息:
arch64-Linux的機器人/斌/勞工處:找不到-lmylib
這是否意味着該公司試圖以一個靜態lmylib.a添加到二進制?
當然,通過從gradle ldLibs列表中刪除「mylib」,應用程序再次運行,所以看起來ldLibs正在強制native-lib加載失敗的.so文件。但爲什麼?
編輯
的問題肯定是AS無法與這樣的內部jniLibs文件夾鏈接。
添加:
ldFlags += "-L${file("src/main/jniLibs/")}".toString()
到gradle這個build文件似乎並沒有解決這個問題。是否支持標誌?
我遇到了同樣的問題,你有沒有找到解決方案? – Maurizio