本身動手android
不放過任意一個說明api
相信官網的文檔bash
高德地圖從3.0.0版本升級到6.0.0,發現App一打開就崩潰,2個項目報的錯誤還不同。(1)報在主線程中打開了太多的線程,app崩潰。(2)找不到so文件,調用jni的時候,方法執行失敗。app
開始懷疑最新版本不支持Gradle 4.1最新版本,也可能不支持buildToolsVersion版本。各類的修改。ui
而後考慮到是否是由於spa
ndk {
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "mips", "mips64", "x86", "x86_64"
}
複製代碼
設置的內容太多,不能將全部的SO包括到。 最後發現不須要支持那麼多,只要支持線程
ndk {
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a"
}
複製代碼
這2個就能夠解決了。 注意今天用戶有人用華爲榮耀V9和1加5T手機,出現地圖黑屏的問題,查看了緣由是JNI沒有初始化,也就是說so文件沒有對應的。這2個手機Android 8.0的。添加了arm64-v8a後,正常。 !_!debug
//3D地圖so及jar
compile 'com.amap.api:3dmap:6.0.0'
//定位功能
compile 'com.amap.api:location:3.8.0'
//搜索功能
compile 'com.amap.api:search:5.7.0'
複製代碼
這個執行的有問題嗎?NO NO NO3d
結果: 混淆。 在生成 apk 進行代碼混淆時進行以下配置(若是報出 warning,在報出 warning 的包加入相似的語句:-dontwarn 包名)代理
3D 地圖 V5.0.0以前:
-keep class com.amap.api.maps.**{*;}
-keep class com.autonavi.amap.mapcore.*{*;}
-keep class com.amap.api.trace.**{*;}
3D 地圖 V5.0.0以後:
-keep class com.amap.api.maps.**{*;}
-keep class com.autonavi.**{*;}
-keep class com.amap.api.trace.**{*;}
定位
-keep class com.amap.api.location.**{*;}
-keep class com.amap.api.fence.**{*;}
-keep class com.autonavi.aps.amapapi.model.**{*;}
搜索
-keep class com.amap.api.services.**{*;}
2D地圖
-keep class com.amap.api.maps2d.**{*;}
-keep class com.amap.api.mapcore2d.**{*;}
導航
-keep class com.amap.api.navi.**{*;}
-keep class com.autonavi.**{*;}
複製代碼
由於以前的版本太老,混淆有修改了。而不一樣的版本在debug中配置有的開啓了混淆,因此致使調用so文件中的方法失敗了。
buildTypes {
debug {
manifestPlaceholders = [DEBUG: "true"]
// 是否進行混淆
minifyEnabled true
shrinkResources true
// 混淆文件的位置
proguardFiles 'proguard-rules.pro'
signingConfig signingConfigs.release
}
release {
manifestPlaceholders = [DEBUG: "false"]
// 是否進行混淆
minifyEnabled true
shrinkResources true
// 混淆文件的位置
proguardFiles 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
複製代碼
要注意到官網的全部的內容啊。
以前執行的好好的代碼,升級到最新版本後,忽然出問題了,當點擊marker的時候,事件傳遞到了下一層,致使了觸發了2個事件。網上查看onMarkerClick方法的時候是否是有問題
請相信官方的說明,網上什麼都是假的,包括美女。
// END 2018年3月10日 晴