我正在开发一个原生的android应用程序,并使用一个生成.so文件的开源库。面对一个奇怪的行为。 在最初的几次,应用程序运行得非常好,库已加载。但现在它无法找到库并给出 -
java.lang.UnsatisfiedLinkError:无法加载:findLibrary 返回null
。很少有观察结果:1。当我提取.apk文件时,库(.so)出现在“lib / armeabi”文件夹下。 2.但是当我尝试将库(.so)搜索到设备提取的路径
时/数据/数据// LIB / ,它不存在。关于为什么会发生这种奇怪的行为以及为什么.so文件没有被提取到/data/data/com.ibm.homeScreen/lib/文件夹下的任何建议。
提前致谢!
答案 0 :(得分:0)
如果您使用eclipse,请检查构建路径设置: 右键单击您的项目 - >属性 - > JavaBuildPath - >订单和导出(是一个选项卡)并检查是否已标记(复选框)librar以进行导出。 还可以设置本机库路径。您可以在“库”选项卡中找到该选项 - > Android私人图书馆 - >右侧的编辑按钮
This也可以提供帮助
答案 1 :(得分:0)
对于eclipse项目,只需将所有* .so文件放在armeabi或armeabi-v7a文件夹中,然后将该文件夹放在项目中的/ libs文件夹中。编译后,* .so文件将自动导入/ data / data // lib
对于Android studio,上述方法对我没有用。相反,我必须将armeabi和armeabi-v7a文件夹放入/ jniLibs而不是/ libs。请注意,我使用的是Gradle 0.10。+,但不确定它是否适用于较旧的Gradle。
答案 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链接还包含一些代码,其中包含(当前)最后一个答案的解决方法。