发布时间:2017-01-11责任编辑:朱明 浏览:3168
我们的游戏要上朋友玩平台,测试正常后发给平台测试。第二天发来信息,华为荣耀7手机上运行崩溃,我们公司没有华为测试手机,找同事借了一个荣耀8,测试了一下,果然崩了,概率100%。
于是乎开始找崩溃原因,我对安卓了解较少,对于这种问题就会发怵,经多次打包运行测试,终于在信息日志中找到一条有价值的信息:
java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.tp.ttgame.zhanguozhi.pyw.fq-1/base.apk"],nativeLibraryDirectories=[/data/app/com.tp.ttgame.zhanguozhi.pyw.fq-1/lib/arm64, /vendor/lib64, /system/lib64]]] couldn't find "libcocos2dcpp.so"。并且只有华为手机才会报这种错误,没有SO文件,肯定是没法运行的,但为啥找不到呢,网上也没有关于华为手机该方面信息。根据一些资料锁定到这几个文件夹armeabi、armeabi-v7a、arm64-v8a先普及下这几个文件夹。

armeabi就是针对普通的或旧的arm v5 cpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm v7 cpu。armeabi-v7a(32位ARM设备),arm64-v8a(64位ARM设备)
难道要在arm64-v8a文件夹下放64位SO文件?想的太多了,目前没找到关于cocos2d 在android环境下编译64位so的资料(可能我了解的少),于是我把armeabi下的so移到armeabi-v7a下,华为上运行起来了,可惜的是其他机型出现了崩溃现象,难道要在两个文件夹中都放一样的so文件?太浪费资源了吧,于是乎把最常用的armeabi文件夹删掉再试试,成功了。保留如下:

把armeabi中的 libcocos2dcpp.so 文件放到armeabi-v7a文件夹中,并且要把armeabi和arm64-v8a文件夹删掉。总结规律应该如下:华为手机在armeabi-v7a中寻找so文件,其他手机先在armeabi中寻找,其次在armeabi-v7a中寻找。
春秋工作室 供稿