一年前用过这个,当时也遇到很多问题,后面慢慢解决了,然而没有总结遇到的问题,现在重新做这个,又浪费了一天时间终于解决了崩溃和不显示地图的问题,记录一下
一丶将百度地图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).第三步中注意加入的各个代码的位置是否正确