本身动手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日 晴