公司有个测试人员的手机是联想的机器,x86的cpu。
公司App用到了百度云推送、百度地图和百度定位,安卓项目中分别引用了这三个SDk的.so库文件
注:.so库文件,C++编写的,比java运行速度快的库文件,类似于windows的DLL
百度云推送、百度地图和百度定位 分别提供了如下几种CPU指令集的.so库文件:
应用到安卓项目中之后,cpu是x86的手机使用apk时,就报错了:
library "libbdpush_V2_3.so" not found
意思是找不到推送的.so库。
经过不断试验得到了下面的结论:
1、x86芯片兼容arm的指令集 (只不过效率低一点)。这是网上的说法
2、安卓项目的libs下一旦出现x86的目录,apk运行的时候就会去加载x86对应的库,但是如果此时x86文件夹没有将so放进来,则会遇到报错。
解决办法:
1、我们可以把百度云推送的armeabi目录下的.so拷贝一份到x86文件夹中,然后打包apk
2、可以不引用百度地图和百度定位的x86的.so,也就是不要引用任何x86的.so库
是去掉还是补上,得看自己的实际情况决定。
我觉得毕竟x86的手机没有arm的多,而且去掉x86的库文件,能减少apk的体积,所以我还是选择去掉。
不过并不是所有armeabi的so库都能被x86兼容的哦!
不知道x86_64可以兼容什么指令集,没设备没法尝试,网上也没查到。
欢迎加入Sencha Touch + Phonegap交流群
1群:194182999 (满)
2群:419834979
共同学习交流(博主QQ:479858761)