这几天想用百度地图定位来装装逼,没想到就遇上了230这个error。
先说说百度地图的流程吧,梳理下思路。
第一步,在http://lbsyun.baidu.com上登录。(没账号就去注册一个,很快的)
第二步,选相应的平台进行开发。因为我是android粉,所以就选择了android地图SDK->获取密钥
第三步,获取相应的SHA1和包名组成安全码,为了唯一认证标志使用,也避免恶意开发者对百度地图服务进行攻击。
第四步:包名可以根据自己的喜好,只要符合命名规范即可。
获取SHA1就坑了。一开始我想到win10右键有个自带的SHA1,然而网页老是报错,说不符合。
后来百度,google下,android studio左下角有个terminal
1、打开Android Studio的Tools->Open Terminal...
2、输入命令:keytool -v -list -keystore keystore.jks
输入密钥库口令(默认是android)
如果之前有create key,密钥库口令就是key的passowrd。
然后我就高高兴兴用百度地图的demo,结果全是网格,查看log,发现230error。
就是告诉我们,我们提供的包名和SHA1不匹配。
然后就各种改包名啦,grade的applicationId啦。
后来根据http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=106461,
安装安全码校对工具apk,打开应用后,找到自己开发的APP(默认最新安装的APP排在最上面),点击后会弹出对话框显示包名和SHA1值。惊奇发现原来是SHA1问题,吓死我了。
果不其然,在开发者平台改了SHA1后,就可以显示地图了(当前默认是北京)。
为什么在android studio的获取的SHA1和验证工具获取的SHA1不同呢。
别忘了,apk有release和debug两个不同的版本。
在真机调试的情况下,我们百度应用是debug(测试)版
而在android studio的key.jks获取的是release(正式)版的SHA1
所以就导致了230error.
深入分析:
很多开发者都有debug版和release版签名文件分别进行apk打包,如果你此刻安装的app是
debug版签名文件打包的,此处获取到的就是
debug版的SHA1;
相反如果你安装的app是release版签名文件打包的,此处获取到的就是release版的SHA1。API控制台中,debug版签名文件对应的SHA1值填入"开发版SHA1"中;同理,release版签名文件
对应的SHA1值填入"发布版SHA1"中,这样能保证开发和测试的时候使用同一个AK即可。
debug版签名文件:
是指在开发过程中从Android Studio或者Eclipse中直接调试运行的apk使用的签名文件,一般是开发工具自动处理的。
release版签名文件:
是指在提交测试或发布时候,选择指定的签名文件进行打包的签名文件,一般同一个APP使用一个统一的签名文件。