【发布时间】:2015-10-09 02:12:23
【问题描述】:
我已经采用了工作示例 native-activity,我正在尝试在 main() 中添加一个调用到一个已编译的 .so 文件中可用的函数。
我已将 jniLibs 下的 .so 放在它自己的 ABI 文件夹中,然后将库名称添加到我的 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-android/bin/ld: 找不到 -lmylib
这是否意味着它正在尝试将静态 lmylib.a 添加到二进制文件中?
当然,通过从 gradle ldLibs 列表中删除“mylib”,应用程序会再次运行,所以 ldLibs 似乎正在强制 native-lib 加载失败的 .so?但为什么呢?
编辑
问题肯定是AS无法链接到jniLibs文件夹里面的so。
添加:
ldFlags += "-L${file("src/main/jniLibs/")}".toString()
到 gradle 构建文件似乎无法解决问题。是否支持标志?
【问题讨论】:
-
我也遇到了同样的问题,你找到解决办法了吗?
标签: android android-studio gradle android-gradle-plugin