百度地图官网教程,官方论坛的指导文章都指引读者去使用默认的.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生成的质疑,优先解决当下主干重点。