init library failed(UnsatisfiedLinkError):dalvik.system.PathClassLoader

来源:互联网 发布:网络词鸡精是什么意思 编辑:程序博客网 时间:2024/05/29 08:22

今天在项目开发中接入第三方的sdk时,遇到这个奇葩的问题,困扰了许久,当时遇到的具体的问题详细如下:
init library failed(UnsatisfiedLinkError):dalvik.system.PathClassLoader
ps:黑色隐去部分是类似com.xxxxxx.CSDN的包名

看到这一大串的问题,我的第一反应就是

(1) 项目当中libs文件夹下面的jar包冲突

(2) 或者是so文件冲突,也就是说对应的so文件放错位置

但是仔细对比自己主项目和自己引用的第三方jar包发现并没有相同的jar包冲突,也并没有所谓的so文件冲突,也没用放错地方,纠结半天……
苦思冥想,半天卡在那里……

最后从头到尾在自习研读报错的代码提示,发现提示
- couldn’t find “libinet.1.6.1.so”
- initSo return false lib: inet.1.6.1,cputype:arm64-v8a
提示找不到libinet.1.6.1.so文件,然后在cputype类型为arm64-v8a去初始化so文件返回false
于是再次仔细比对主项目和引用的第三方sdk的library项目中的libs对应的文件不同,主项目当中
主项目的libs文件
公司项目libs下对应支持的架构文件夹
引用的项目libs文件
引入的第三方sdk的library项目libs下对应支持的架构文件夹
仔细发现,问题就出现在这里面,主项目当中libs文件夹下面并没有对arm64-v8a的支持,然后主项目当中又引用了sdk的library,于是乎,项目编译过程中,程序很自然的去编译,以为你主项目当中对arm64-v8a支持,并且很自然的到arm64-v8a库中去寻找和主项目当中armeabi、armeabi-v7a、x86同样支持的libinet.1.6.1.so文件,于是项目运行就出现了上面看到的大红色的bug log
好了废话说得太多了,解决的办法就是:在根据自己项目的支持情况下,

删除引用第三方sdk的library项目中libs文件夹的arm64-v8a文件,再次运行项目,OK,运行通过!~_~

ps:希望能帮到各位,欢迎各位互相交流学习!

0 0
原创粉丝点击