天天看點

高德3D地圖和Realm資料庫一起使用時的相容問題

如題,二者一起使用時,在部分機型上地圖不顯示。一番查找,發現原因是高德隻提供了armeabi和arm64-v8a類型so檔案。于是打包的時候設定隻保留armeabi,因為armeabi“幾乎”相容所有機型。打包運作,地圖顯示出來了。

以為這樣就結束了,結果證明太天真了。過段時間先後有兩個使用者回報華為P7手機安裝應用之後,啟動時就一直無響應。手上也沒有P7來測試,很捉急,這時候想起來線上測試平台。二話不說直奔華為雲測試,尼瑪,竟然沒找到P7的機型。後來在百度MTC測試平台的遠端真機測試有P7,而且還限時免費,心中湧過一陣暖流。

線上調試之後,發現是還是ABI相容問題,一番折騰之後,發現是Realm的問題。我1.2.0版本的Realm,還每個CPU類型都支援。華為P7的CPU類型是armeabi-v7a,我打包時隻保留了armeabi,Realm的armeabi庫檔案不相容armeabi-v7a。怎麼辦呢,如果保留armeabi-v7a的話,高德地圖因為沒有armeabi-v7a檔案又要出問題了。後來看到littlezan同學的文章(http://www.jianshu.com/p/73ce9b69050a),發現了生機。就是高德地圖的armeabi裡的檔案複制到armeabi-v7a裡一份,然後打包的時候保留armeabi和armeabi-v7a,因為高德的armeabi是可以相容armeabi-v7a型号的CPU的。

buildTypes {

release {

ndk {

abiFilters = ['armeabi', 'armeabi-v7a']

}

}

打包運作,華為P7運作正常,到此結束。