Android L(5.0)在eclipse中不搜索 “armeabi”或 "armeabi-v7a"文件夹(UnsatisfiedLinkError)中的原生库

标签 android eclipse java-native-interface android-5.0-lollipop unsatisfiedlinkerror

我的应用程序使用 2 个 native 库,我们称它们为 LibA.so 和 LibB.so。以前,我的应用程序在 kitkat OS 下运行良好,没有任何问题。

现在它在带有 OS 5.0(lollipop) 的 Nexus 5 中给出 UnsatisfiedLinkError 两个 .so 库都在 armeabi 文件夹中。

所以请给我通用的解决方案文件夹结构。

我对 android 中的 native 库相当陌生。提前致谢!

更新: 它现在工作正常。 通过将我的 LibA.so 文件链接更改为 Md5_init 相关调用获得了解决方案。 在 Os 5.0 中,谷歌对系统库调用进行了一些更改 谢谢大家的支持

最佳答案

根据您的错误描述,我可以看到库 LibA.so 未加载,因为它使用了一些不可用的 MD5 代码 - 未链接。 例如,您可以使用其他在构建期间链接了 MD5 源的 native 共享库(作为共享库)- 但您没有将此共享库复制到目标应用程序 libs 文件夹。

我不确定最近的 Android NDK 中是否包含 MD5 相关函数的实现。也可能它是以前版本的某些 android 系统共享库的一部分,并且已从 Android L 中删除。

因此您需要检查 C++/C 代码对 MD5 相关函数的引用,并找到存储/链接源的位置。

我可能会提供从 libc.so 导出的函数列表的链接,例如 android-17 和 android-L: Android-17 LIBC functions对比Android-L LIBC functions

而且您可能还会看到 - MD5 相关函数在 L 的共享库中不存在 - 所以我相信您必须将这些功能 (MD5) 的源代码包含到您的动态库中。

关于Android L(5.0)在eclipse中不搜索 “armeabi”或 "armeabi-v7a"文件夹(UnsatisfiedLinkError)中的原生库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27119623/

相关文章:

c++ - 程序意外终止 C++

c++ - 如何在 Arduino Eclipse IDE 中设置编译器选项?

c++ - 使用 gdbserver 从 clion 调试 jni 库

c++ - extern C 是否应该包装我的每一个函数?

Android抽屉导航切换图标向右

android - 从 xml 包装一个 LinearLayout

android - 即使代码正常,也找不到启动器 Activity (尽管我不确定)

java - JNI应用程序挂起

android - 如何处理 GCM 更改注册 ID?

android - 有没有android :largeHeap ="true"的替代品