Android应用中的.so文件无法在/data/data/<package>/lib目录中提取。

9
我正在开发一个本地的Android应用程序,使用了一个生成.so文件的开源库。遇到了奇怪的问题。 前几次,应用程序运行得非常完美,库也能够被加载。但现在它无法找到库文件并显示以下错误信息:
java.lang.UnsatisfiedLinkError: Couldn't load : findLibrary returned null
以下是一些观察结果:1. 当我提取.apk文件时,库(.so)位于“lib/armeabi”文件夹下。2. 但当我尝试在设备提取路径中搜索库(.so)时,
/data/data//lib/
它不在那里。有什么建议可以解释为什么会出现这种奇怪的情况,以及为什么.so文件没有被提取到/data/data/com.ibm.homeScreen/lib/文件夹下。
提前感谢!
3个回答

0

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

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

enter image description here


0
如果你使用的是Eclipse,请检查构建路径设置: 右键点击你的项目 -> 属性 -> Java Build Path -> Order and Export(一个选项卡),在那里检查库是否被标记(复选框)为导出。 还有一种可能是设置本地库路径。你可以在Library选项卡中找到这个选项 -> Android Private Libraries -> 右侧的编辑按钮 这个链接也可能会有所帮助。

这似乎不太可能相关,特别是因为发布者说.so文件存在于apk中,但在设备上未被解压缩。 - Chris Stratton

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接