高德地圖升級失敗及onMarkerClick方法使用的坑

高德地圖

本身動手android

不放過任意一個說明api

相信官網的文檔bash

升級後崩潰

高德地圖從3.0.0版本升級到6.0.0,發現App一打開就崩潰,2個項目報的錯誤還不同。(1)報在主線程中打開了太多的線程,app崩潰。(2)找不到so文件,調用jni的時候,方法執行失敗。app

  1. 開始懷疑最新版本不支持Gradle 4.1最新版本,也可能不支持buildToolsVersion版本。各類的修改。ui

  2. 而後考慮到是否是由於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

  1. 難道是由於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 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
        }
    }
複製代碼

要注意到官網的全部的內容啊。

onMarkerClick 返回值的誤導

以前執行的好好的代碼,升級到最新版本後,忽然出問題了,當點擊marker的時候,事件傳遞到了下一層,致使了觸發了2個事件。網上查看onMarkerClick方法的時候是否是有問題

網上
說明都是一邊倒的說返回false的做用是,不將marker移動到地圖中心。 OK, 那就是說沒有問題,以前的代理邏輯是這樣的。繼續找其餘緣由。1天又過去了。!_! 最後麼有版本,下載了官方的文檔,看到了:
官網
返回false是指點擊事件向下傳遞,Oh,My God。 真的是晴天霹靂啊。

請相信官方的說明,網上什麼都是假的,包括美女。

高德地圖下載地址。

// END 2018年3月10日 晴

相關文章
相關標籤/搜索