9

我正在开发一个原生 android 应用程序,并使用一个生成 .so 文件的开源库。面对奇怪的行为。前几次,应用程序运行良好,库被加载。但现在它无法找到图书馆并给出 -

java.lang.UnsatisfiedLinkError:无法加载:findLibrary 返回 null

.以下是一些观察: 1. 当我提取 .apk 文件时,库 (.so) 存在于“lib/armeabi”文件夹下。2.但是当我尝试将库(.so)搜索到设备提取路径中时

/data/data//lib/ ,它不存在。关于为什么会发生这种奇怪行为以及为什么 .so 文件没有被提取到 /data/data/com.ibm.homeScreen/lib/ 文件夹下的任何建议。

提前致谢!

4

3 回答 3

0

您可以在此处找到有关此问题的更多信息: 为什么某些 Android 手机会导致我们的应用程序抛出 java.lang.UnsatisfiedLinkError? https://code.google.com/p/android/issues/detail?id=59420

stackoverflow 链接还包含一些代码以及(当前)最后一个答案中的解决方法。

于 2014-07-15T12:19:35.530 回答
0

对于 eclipse 项目,只需将所有 *.so 文件放在 armeabi 或 armeabi-v7a 文件夹中,然后将文件夹放在项目中的 /libs 文件夹中。编译,*.so文件会自动导入/data/data//lib

对于 Android Studio,上述方法对我不起作用。相反,我必须将 armeabi 和 armeabi-v7a 文件夹放入 /jniLibs 而不是 /libs。请注意,我使用的是 Gradle 0.10.+,但不确定它是否适用于较旧的 Gradle。

在此处输入图像描述

于 2014-06-15T11:22:29.790 回答
0

如果您使用 Eclipse,请检查构建路径设置:右键单击您的项目 --> 属性 --> JavaBuildPath --> 排序和导出(是一个选项卡)并检查库是否已标记(复选框)导出。还可以设置本机库路径。您可以在 Library Tab --> Android Private Libraries --> 右侧的 EDIT Button 中找到该选项

也可以帮助

于 2013-09-26T15:08:29.577 回答