问题描述:
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,体积大点,但是可以解决这个问题!
另外贴下一个类似的博客:希望对解决你目前的问题,带来灵感!