java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader

问题描述:
11-21 08:14:08.035 28079-28100/? E/AndroidRuntime: FATAL EXCEPTION: Thread-2
                                                   Process: io.rong.push, PID: 28079
                                                   java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.hx.socialapp-1/base.apk"],nativeLibraryDirectories=[/data/app/com.hx.socialapp-1/lib/x86, /data/app/com.hx.socialapp-1/base.apk!/lib/x86, /system/lib, /vendor/lib]]] couldn't find "libpush.so"
                                                       at java.lang.Runtime.loadLibrary0(Runtime.java:972)
                                                       at java.lang.System.loadLibrary(System.java:1530)
                                                       at io.rong.push.core.PushDaemon$1.run(PushDaemon.java:78)
                                                       at java.lang.Thread.run(Thread.java:761)
11-21 08:14:08.038 28079-28099/? E/SQLiteLog: (5) statement aborts at 2: [PRAGMA journal_mode=PERSIST] 

   最近在跑虚拟机的时候,程序报了这个错,跑真机没事.   把问题往网上一搜,收到下面这个博客:

http://blog.csdn.net/shuangpinai2014/article/details/51277034

原文如下:

相信也有人在从事安卓开发中也有遇到过此类问题,这几天碰到了该问题,正好又弄明白了问题产生的原因,写个博客记录一下。
    最近公司app中想要加入视频直播的功能,于是选用了乐视的云直播SDK(这是坑的开始,哈哈,顺带黑了一把乐视)。楼主在往自己的项目中集成乐视SDK之前,先新开了一个项目用于测试,乐视云播的功能是否可用。集成之后一切正常,看起来非常完美,离视频在线直播只有一步了,只要集成进自己项目中就可以了,想想就激动啊!!
    麻烦出现了,在往自己的项目中集成乐视云播时一直提示标题所示的错误  
 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.aiming.weipai-2/base.apk"],nativeLibraryDirectories=[/data/app/com.aiming.weipai-2 b/arm64,  endor b64, /system b64]]] couldn't find "liblecplayer.so"
开始楼主一直不明白,测试项目中一切完好,同时乐视提供的demo也完全没问题啊,代码也检查好几遍了啊,就是没问题啊,为啥一运行就挂呢,这不科学。。。为啥一直提示arme64-v8a下面找不到可用的.so文件,他就不能自动去armeabi-v7a下找呢,测试项目中也并没有arme64-v8a文件夹,不是照样跑起来了。
    然后各种google、百度查资料之后,发现一个连接,喏,就是这个 http://www.zhihu.com/question/36893314 简单粗暴的解决了楼主心中的疑惑,直接上重点:


    一切都解释的通了,由于楼主的项目有引入其他项目的.so文件,所以在arme64-v8a文件夹是有其他.so文件存在的,这也就解释了为什么系统一直要在arme64-v8a文件夹中查询"liblecplayer.so",而不去armeabi-v7a文件夹。
然而乐视并没有提供arme64-v8a相对应的.so文件,兼容性不到位(又黑他一把。。。)

一般应用的libs下都有这几个文件夹


对这几个文件夹不清楚的童鞋可以参考下这个文章 http://blog.csdn.net/mao520741111/article/details/50328669
  按照上面的方式检查了一下我的代码,结果发现我的不光 arme64-v8a有,armeabi,armeabi-v7a也有这个libpush这个库.  但是还是解决不了这个问题,尼玛这是什么鬼.其实

上面已经提示error已经提示的很清楚了,X86中没有加这个库,后来看了下svn提交记录,发现确实是这个没有上传,上传后,问题得到了解决, 以后遇到这种问题,首先多看日志,别急着找,第二,遇到这个错的时候, 上面的方法还是解决不了你的问题话,最简单粗暴的方法,所有的libs目录下的包,都给他加上那个没有找到的库!这样只是apk,体积大点,但是可以解决这个问题!

 另外贴下一个类似的博客:希望对解决你目前的问题,带来灵感!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值