天天看點

高德地圖混淆問題高德地圖混淆問題

高德地圖混淆問題

錯誤如下

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包是否正确,還需要正确地配置混淆規則,無使用的服務添加忽略警告即可,否則無法正确混淆打包

繼續閱讀