您的位置:首页 > 其它

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

2015-07-10 15:45 316 查看
公司有个测试人员的手机是联想的机器,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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: