android .so文件未在/ data / data / <package> / lib </package>中解压缩

时间:2013-09-26 15:03:34

标签: android nativelibrary

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

  

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

。很少有观察结果:1。当我提取.apk文件时,库(.so)出现在“lib / armeabi”文件夹下。 2.但是当我尝试将库(.so)搜索到设备提取的路径

  

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

提前致谢!

3 个答案:

答案 0 :(得分:0)

如果您使用eclipse,请检查构建路径设置: 右键单击您的项目 - &gt;属性 - &gt; JavaBuildPath - &gt;订单和导出(是一个选项卡)并检查是否已标记(复选框)librar以进行导出。 还可以设置本机库路径。您可以在“库”选项卡中找到该选项 - &gt; Android私人图书馆 - &gt;右侧的编辑按钮

This也可以提供帮助

答案 1 :(得分: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

答案 2 :(得分:0)

您可以在此处找到有关此问题的更多信息: Why do some Android phones cause our app to throw an java.lang.UnsatisfiedLinkError? https://code.google.com/p/android/issues/detail?id=59420

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