在开发中需要使用百度地图,百度地图会需要有两个key:release和debug,需要使用对应的签名证书的SHA1
在百度地图的开发平台上申请()。
SHA1
的方式:cd到.android
所在的目录: keytool -list -v -keystore debug.keystore
同样的方式可以到release
签名证书的SHA1。
release-key
和debug-key
一般情况需要在AndroidManifest
指定对于的百度地图的key才能在APP中正确的显示百度地图。 这里有产生两个用的时候很不方便的问题:
1.每个开发者都有一个debug的签名证书,每个人都需要申请一个百度地图key,每个人都需要配置。2.在编译reasle的时候需要切换把`com.baidu.lbsapi.API_KEY`换成release-key
解决这两个问题可以通过强大的gradle
,实现无缝的自动的在项目中配置release-key和debug-key。
使用一个同一个debug-key
把一个已经生成百度地图key的debug签名证书提交到版本库中,指定每个开发者使用这个签名证书debug。
android { compileSdkVersion 23 buildToolsVersion '23.0.2' signingConfigs { release { storeFile file("${rootDir}/release") storePassword "" keyAlias "" keyPassword "" } debug { storeFile file("${rootDir}/debug.keystore") } } sourceSets { main { jni.srcDirs = [] } } }
在android
的signingConfigs
中可以配置release的签名证书和debug的签名证书,一般都是指定release的签名证书,这里也指定下debug的签名证书,${rootDir}
是当前项目的主目录,这样就指定了所有的开发人员都使用一个debug签名证书。
com.baidu.lbsapi.API_KEY
的时候只需要配置一个debug-key就可以了。 自动切换reasle-key和debug-key
虽然设置了com.baidu.lbsapi.API_KEY
为debug-key但是在发布项目的时候还需要重新设置为reasle-key
,这样的操作不仅麻烦而且还容易出错,经常出现发布之后的版本百度地图无法显示,因为使用了reasle的签名证书,却没有使用reasle-key。
gradle
让项目自动的切换reasle-key和debug-key,在发布版本的时候不需要再重新配置。在AndroidManifast.xml
中配置: 这里给com.baidu.lbsapi.API_KEY
的value设置了一个变量BAIDU_KEY_VALUE。
在build.gradle
中给BAIDU_KEY_VALUE赋值:
android { compileSdkVersion 23 buildToolsVersion '23.0.2' buildTypes { release { manifestPlaceholders = [BAIDU_KEY_VALUE: "release-key"] } debug { manifestPlaceholders = [BAIDU_KEY_VALUE: "debug-key"] } }}
manifestPlaceholders
是gradle的一个功能,可以在AndroidManifest中定义一个变量,定义的语法是${BAIDU_KEY_VALUE}
,在build.gradle中可以给这里变量赋值,这个语法使用方便,语法简单。