gpt4 book ai didi

android - 如何使用 Android Studio 1.3 和 Gradle 插件包含多个共享库?

转载 作者:行者123 更新时间:2023-12-03 04:38:17 25 4
gpt4 key购买 nike

我采用了 native Activity 的工作示例,我试图在 main() 中添加一个调用到一个已编译的 .so 文件中可用的函数。

我已将 .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-android/bin/ld: cannot find -lmylib



这是否意味着它正在尝试将静态 lmylib.a 添加到二进制文件中?

当然,通过从 gradle ldLibs 列表中删除“mylib”,应用程序会再次运行,所以 ldLibs 似乎正在强制 native-lib 加载失败的 .so?但为什么?

编辑

问题肯定是 AS 无法与 jniLibs 文件夹中的 so 链接。

添加:
    ldFlags += "-L${file("src/main/jniLibs/")}".toString()

到 gradle 构建文件似乎并不能解决问题。是否支持标志?

最佳答案

检查我的问题:OpenCv with Android studio 1.3+ using new gradle - undefined reference
有了这个我解决了链接错误。

android.productFlavors {
create("armv7") {
ndk.with {
abiFilters += "armeabi-v7a"
File curDir = file('./')
curDir = file(curDir.absolutePath)
String libsDir = curDir.absolutePath+"\\src\\main\\jniLibs\\armeabi-v7a\\" //"-L" +
ldLibs += libsDir + "libnative_camera_r4.3.0.so"
ldLibs += libsDir + "libopencv_contrib.a"
}
}
}

关于android - 如何使用 Android Studio 1.3 和 Gradle 插件包含多个共享库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31508301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com