項(xiàng)目里百度地圖定位失效,問題終于解決了
我做的一個項(xiàng)目里用到了百度地圖的定位功能,之前已經(jīng)實(shí)現(xiàn)了,最近在研究一個開源的IM框架android端,導(dǎo)入部分代碼后意外發(fā)現(xiàn)
百度地圖的定位功能居然失效了!
我檢查了一下:
(1)權(quán)限寫了
(2)manifest里面百度service和meta-data寫了,申請的key也沒錯
(3)application需要修改的地方也是對的
(3)location參數(shù)設(shè)置正確
我最后甚至重新建了一個同樣包名的項(xiàng)目進(jìn)行測試,發(fā)現(xiàn)可以獲取數(shù)據(jù),那總結(jié)下來很有可能是導(dǎo)入的IM代碼有問題,但是IM的代碼我還沒引用,那么就很有可能是架包的問題
然后我發(fā)現(xiàn)libs下有armeabi和armeabi-v7a兩個文件夾,后來去網(wǎng)上查才知道(以下是引用):
armeabi與armeabi-v7a表示支持不同的CPU類型
armeabi是指的該so庫用于ARM的通用CPU,而v7a的CPU支持硬件浮點(diǎn)運(yùn)算。因此armeabi通用性強(qiáng),但速度慢,而v7a能充分發(fā)揮v7a CPU的能力,在AIR打包APK調(diào)試模式adobe選擇的是通用性強(qiáng)的armeabi模式。
android支持不同CPU的深層含義
首先從硬件支持方便來看,我們的adnroid設(shè)備目前為止大部分都是支持ARM芯片,(當(dāng)然市面上此刻最新的android機(jī)器還支持intel等另外的幾個芯片,例如intel最新的凌動項(xiàng)目芯片,就獲得了android4.1的青睞)。從android版本與支持ARM硬件編碼的程度來看:
起初android1.6:只支持armv4與armv5te指令集。
到了android2.0:增加了支持arm-vfp,armv6,armv6t2指令集。
到了android2.2:增加支持armv7-a指令集。
所以armeabi-v7a 應(yīng)該是與AIR限定支持android2.2以上的條件有關(guān)。android2.2以上能讓硬件發(fā)揮更大的作用。
我項(xiàng)目中使用armeabi還是armeabi-v7a
對于AIR項(xiàng)目來說性能問題是最大的瓶頸,能優(yōu)化一點(diǎn)就一點(diǎn),所以如果接平臺方SDK或者寫ANE的時候使用到SO庫,個人推薦全部放到armeabi-v7a下,而不要為了兼容放到armeabi。
綜上所述,百度定位是把so庫放在armeabi里的,導(dǎo)致定位無效。
為了提高cpu的性能,我把so庫都放到armeabi-v7a里面
之后定位功能就恢復(fù)了