最近在做一个基于百度地图SDK的应用,由于百度官方提供的关于AK的申请是基于Eclipse+ADT的,没有基于AS的,所以在获取SHA1值这个地方出了一些问题,导致百度地图初始化总是提示APP Scode 230码效验失败的问题
正文:
基于上面的问题,说一下我的解决思路。
无论是Eclipse+ADT还是AS在程序调试的时候都需要给这个程序一个数字签名,而这个数字签名是由IDE默认完成的。在Eclipse+ADT的方式中,我们可以在windows -> preferance -> android -> build中看到SHA1值,但是在AS中没有查看这个值的界面,所以我们只能通过命令行查看,但是AS中默认的Keystroe我不知道密码,无法查看其SHA1值。所以我就自己创建一个Keystroe并把它指定为程序调试的数字签名。
首先:Build->Generate Signed APK...->Next如下图:
在这个界面设置你要生成的数字签名的相关参数,建议设置简单一点,方便在协作开发的时候使用,设置好之后点击Next即可,这个时候退出该配置面板。
在生成Keystore之后,我们在命令行里跳到指定的Keystore的存储位置,然后输入:keytool -list -v -keystore debug.jks;这里的 debug.jks是我的Keystore的存储文件名,然后会显示如下图:
1.我们把签名文件放到工程根目录下(这样做是为了保持路径的统一)
2.在Gradle中引入如下代码:
//配置keystore签名
signingConfigs {
release {
storeFile file("../xxxxx.jks")
storePassword "xxxxxxxx"
keyAlias "bitniu team"
keyPassword "xxxxxxxx"
}
}
buildTypes {
debug {
signingConfig signingConfigs.release
}
release {
signingConfig signingConfigs.release
}
}
这样编译出来的debug版本直接用的是正式签名噢。太棒了