Android Studio中使用百度地圖API,不顯示地圖的問題解決辦法
一年前用過這個,當時也遇到很多問題,後面慢慢解決了,然而沒有總結遇到的問題,現在重新做這個,又浪費了一天時間終於解決了崩潰和不顯示地圖的問題,記錄一下
一丶將百度地圖SDK新增到專案中
進入這個網址點選自定義下載之後,選擇你要的功能,然後點下面的開發包,最好把示例程式碼也下下來,雖然官網有使用的說明,但是每次按照上面說的都沒有成功過,也不知道是不是臉黑
- 將下載的SDK加入專案
我們將下載的sdk壓縮包中的libs資料夾解壓出來,然後複製libs資料夾下的所有檔案
將複製的檔案貼上到專案的libs資料夾下
總共6個,其中arm64-v8a,armeabi,armeabi-v7a,x86,x86_64裡面都是so檔案,而且這幾個裡面的so都一樣,我們需要新增一下下面的BaiduLBS_Android.jar檔案,右鍵該檔案,選擇Add As Library,然後點選ok
二、申請AK
在這塊有很多人遇到只顯示網格,載入不出地圖的問題,這個一般是AK申請的不對,在上面連結中,我們申請AK需要一個SHA1和包名
包名獲取方式
包名可以在AndroidManifest.xml中看到,如下
SHA1獲取方式
進入Android Studio的命令列
進入到C:\users\你的使用者名稱.android 然後輸入下面的命令:
keytool -list -v -keystore debug.keystore
有些人可能因為重灌系統等原因,這個資料夾下沒有debug.keystore,雖然有自己建立一個該檔案的方法,但是這裡不寫下來,因為好像獲取到的不對….
輸入密碼之後,就能得到sha1了,如下圖:
申請AK的時候,如果只是自己做demo的話,SHA1填到釋出版SHA1即可,然後就能獲得我們這個demo的AK了
(如果打包的話,原來的AK就不能用了,我們需要重新設定一下發布版SHA1和開發版SHA1)
三、專案配置
在build.gradle中有一個android塊,在其中加入sourceSets塊,如下
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.example.gao.test"
minSdkVersion 14
targetSdkVersion 25
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
//加入sourceSets塊
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
}
按照上面官網的說明,將在第二步中申請到的AK複製到你的AndroidManifest.xml下,如圖,放到value的值裡
四、不顯示地圖的問題解決方法
對於這個問題,一般是AK不對,也就是申請的時候,我們的SHA1和包名其中可能不對,對於包名,在AndroidManifest.xml中得到。
對於SHA1,如果按照第二步做仍然不顯示地圖,還有一個驗證SHA1的手機軟體:
下載之後,安裝到手機上可以檢視你手機上應用的正確的sha1和包名
點選你的demo
這裡就能看到你正確的sha1和包名了,可以去檢查一下,你申請key的時候使用的sha1和包名是否和這個一致,不一致就顯示不出來地圖,可以更改為正確的sha1或者重新申請一個ak,重新申請的話,別忘了修改AndroidManifest.xml中的AK值。
五、問題總結
1.程式崩潰
注意一下第三步中有沒有在AndroidManifest.xml中新增sourceSets塊
2.只顯網格,不顯示地圖
1).沒有聯網
2).AK不對,注意申請的時候的包名和SHA1,最好的辦法就是使用第四步的方法檢驗一下sha1和包名,和申請ak的時候是否一致,不一致用第四步得到的sha1和包名重新申請一個ak
3).第三步中注意加入的各個程式碼的位置是否正確