高德地圖混淆問題
錯誤如下
Warning:com.amap.api.maps.overlay.BusLineOverlay:
can’t find referenced class com.amap.api.services.busline.BusLineItem
解決問題
- 第一步,可能是沒有正确混淆高德地圖的類
在proguard-rules.pro檔案中添加混淆規則
#搜尋
-keep class com.amap.api.services.*{;}
#定位
-keep class com.amap.api.location.*{;}
-keep class com.amap.api.fence.*{;}
-keep class com.autonavi.aps.amapapi.model.*{;}
#2D地圖
-keep class com.amap.api.maps2d.*{;}
-keep class com.amap.api.mapcore2d.*{;}
結果: 仍然報錯
- 第二步,可能是沒有添加搜尋的jar包
添加AMap_Search_V4.0.0_20170111.jar
結果: 仍然報錯
- 第三步,由于目前程式并沒有使用到搜尋服務以及其它服務,是以可以在混淆規則中忽略它
在proguard-rules.pro檔案中添加混淆規則
-dontwarn com.amap.api.mapcore2d.MapMessage
結果: 程式可以正常混淆打包,運作無異常
結論
-dontwarn 包名
忽略未使用的類所帶來的警告
引用第三方sdk時,除了需要注意引用的jar包是否正确,還需要正确地配置混淆規則,無使用的服務添加忽略警告即可,否則無法正确混淆打包