自己动手
不放过任意一个说明
相信官网的文档
升级后崩溃
高德地图从3.0.0版本升级到6.0.0,发现App一打开就崩溃,2个项目报的错误还不一样。(1)报在主线程中打开了太多的线程,app崩溃。(2)找不到so文件,调用jni的时候,方法执行失败。
开始怀疑最新版本不支持Gradle 4.1最新版本,也可能不支持buildToolsVersion版本。各种的修改。
然后考虑到是不是因为
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后,正常。 !_!
- 难道是因为Maven的支持不够,还需要手动再导入SO文件。下载了6.0.0的so文件。发现不是。!_!
难道
//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 NO
结果: 混淆。
在生成 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
}
}
要注意到官网的所有的内容啊。
onMarkerClick 返回值的误导
之前执行的好好的代码,升级到最新版本后,突然出问题了,当点击marker的时候,事件传递到了下一层,导致了触发了2个事件。网上查看onMarkerClick方法的时候是不是有问题
说明都是一边倒的说返回false的作用是,不将marker移动到地图中心。
OK, 那就是说没有问题,之前的代理逻辑是这样的。继续找其他原因。1天又过去了。!_! 最后么有版本,下载了官方的文档,看到了:
返回false是指点击事件向下传递,Oh,My God。 真的是晴天霹雳啊。
请相信官方的说明,网上什么都是假的,包括美女。
高德地图下载地址。
// END 2018年3月10日 晴