項(xiàng)目里百度地圖定位失效,問(wèn)題終于解決了
我做的一個(gè)項(xiàng)目里用到了百度地圖的定位功能,之前已經(jīng)實(shí)現(xiàn)了,最近在研究一個(gè)開(kāi)源的IM框架android端,導(dǎo)入部分代碼后意外發(fā)現(xiàn)
百度地圖的定位功能居然失效了!
我檢查了一下:
(1)權(quán)限寫(xiě)了
(2)manifest里面百度service和meta-data寫(xiě)了,申請(qǐng)的key也沒(méi)錯(cuò)
(3)application需要修改的地方也是對(duì)的
(3)location參數(shù)設(shè)置正確
我最后甚至重新建了一個(gè)同樣包名的項(xiàng)目進(jìn)行測(cè)試,發(fā)現(xiàn)可以獲取數(shù)據(jù),那總結(jié)下來(lái)很有可能是導(dǎo)入的IM代碼有問(wèn)題,但是IM的代碼我還沒(méi)引用,那么就很有可能是架包的問(wèn)題
然后我發(fā)現(xiàn)libs下有armeabi和armeabi-v7a兩個(gè)文件夾,后來(lái)去網(wǎng)上查才知道(以下是引用):
armeabi與armeabi-v7a表示支持不同的CPU類(lèi)型
armeabi是指的該so庫(kù)用于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的深層含義
首先從硬件支持方便來(lái)看,我們的adnroid設(shè)備目前為止大部分都是支持ARM芯片,(當(dāng)然市面上此刻最新的android機(jī)器還支持intel等另外的幾個(gè)芯片,例如intel最新的凌動(dòng)項(xiàng)目芯片,就獲得了android4.1的青睞)。從android版本與支持ARM硬件編碼的程度來(lái)看:
起初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
對(duì)于AIR項(xiàng)目來(lái)說(shuō)性能問(wèn)題是最大的瓶頸,能優(yōu)化一點(diǎn)就一點(diǎn),所以如果接平臺(tái)方SDK或者寫(xiě)ANE的時(shí)候使用到SO庫(kù),個(gè)人推薦全部放到armeabi-v7a下,而不要為了兼容放到armeabi。
綜上所述,百度定位是把so庫(kù)放在armeabi里的,導(dǎo)致定位無(wú)效。
為了提高cpu的性能,我把so庫(kù)都放到armeabi-v7a里面
之后定位功能就恢復(fù)了