【发布时间】:2015-07-21 19:15:30
【问题描述】:
有人可以指导我正确放置 *.so 文件应该存放在 gradle/android 项目的位置吗?
我有它们:
project->app->src->main->jniLibs
assets、java 和 res 文件夹在 main 中也是它的兄弟,但在构建 APK 时它们似乎不包含在内,导致“UnsatisfiedLinkError”
编辑
我看过:
Include .so library in apk in android studio
并尝试将导演更改为 libs 和 lib,但没有成功。
更新 1
- 反编译的 APK 现在显示 /Lib 下的 *.so 文件,我将它们放在 project -> app -> src -> main -> jniLibs -> armeabi 下,这就是它们的架构 但是 从本机库中调用方法时,我收到 UnsatisfiedLinkError,尽管它似乎通过了静态构造函数中的 System.loadLibrary 调用而没有显示错误
【问题讨论】:
-
app->src->main-jniLibs-a 文件夹,随便命名->.so 文件
-
所以反编译的apk显示/lib/armeabi中的so文件,但仍然出现链接错误
-
确切的消息是:'没有找到 int 的实现...'
-
编译 C++ 代码后,我的 .so 文件被放置在 src -> main -> libs -> {plattform} 中。平台取决于您的 .so 编译的平台。可能的值可能是:armeabi-v7a、armeabi、mips、x86、arm64-v8a
-
正确,它们是 armeabi。我也试过 src->main->libs-> aremabi。问题已经发生了变化...我将在上面更新...似乎 *.so 文件现在包含在 /Lib 下的 APK 中,但是从本机库调用方法会引发 UnsatisfiedLink 异常,即使它似乎加载了System.loadLibrary 没有遇到问题
标签: android gradle java-native-interface