百度地图官网教程,官方论坛的指导文章都指引读者去使用默认的.android目录下的debug.keystore。然而却在官方的Demo中使用app根目录下的debug.keystore导致简单的错误一直迷路,记录一下自己的解决问题的思路。这其中暴露了我容易走弯路,并且容易偏题的毛病。
问题描述:
导入BaiduMapSdkDemo的时候,按照官方教程申请了AK。但是AS打包到真机却总是提示:
key验证出错,230错误。
解决途径:
官方论坛,下载:安全码校验工具。发现SHA1指纹和我.android目录中的debug.keystore的SHA1不同。
解决步骤&疑问:
1、使用同样IDE环境打出的Apk包的SHA1指纹都是.android中的指纹,为什么导入的官方Demo就不同!
2、申请AK时,填入:发布版SHA1、开发版SHA1。我选择发布版,可当前却是开发环境的默认debug.keystore。
2.1、然而同一个SHA1同时填入发布版、开发版和只填入发布版生成的AK是一样的!
3、查看build.gradle文件发现:官方包指定了keystore文件。
signingConfigs {
// your debug keystore
debug {
storeFile file('debug.keystore')
}
}
4、新建的Android项目没有指定keystore,默认使用.android中的debug.keystore。
5、这里的storeFile file('debug.keystore')指的路径应该是app根路径
6、然后我在”BaiduMapsApiASDemo\app\“路径下发现了一个debug.keystore。
7、使用keytool查看,SHA1果然来自这个debug.keystore。
8、这是不是坑爹,官方网站、论坛等等教人使用.android的默认keystore。
9、既然自己带了一个keystore,就申请一个默认AK填入Manifest文件就得了,是不是误导!
10、重新指定keystore即可:storeFile file('C:/Users/cheng/.android/debug.keystore')
11、这种翻遍网站论坛都找不到解答的问题,让自己找到了,还是相当喜悦的!
总结:
需要多多理解gradle的语法,读懂build.gradle的配置。解决问题时多一个思路。当确定是SHA1的问题时,就没必要马上“建立分支”去解决官网AK生成的质疑,优先解决当下主干重点。