[Phonegap+Sencha Touch] 移动开发56 安卓要注意不同CPU指令集的第三方.so库文件的引用

公司有个测试人员的手机是联想的机器,x86的cpu。

公司App用到了百度云推送、百度地图和百度定位,安卓项目中分别引用了这三个SDk的.so库文件

注:.so库文件,C++编写的,比java运行速度快的库文件,类似于windows的DLL


百度云推送、百度地图和百度定位 分别提供了如下几种CPU指令集的.so库文件:

[Phonegap+Sencha Touch] 移动开发56 安卓要注意不同CPU指令集的第三方.so库文件的引用_第1张图片 [Phonegap+Sencha Touch] 移动开发56 安卓要注意不同CPU指令集的第三方.so库文件的引用_第2张图片 [Phonegap+Sencha Touch] 移动开发56 安卓要注意不同CPU指令集的第三方.so库文件的引用_第3张图片


应用到安卓项目中之后,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)


你可能感兴趣的:(android,Cordova,PhoneGap,ARM,X86)