使用高德地图的过程中,难免会遇到公司或者个人的多个apk共用一个签名文件的现象。如果刚好是这样,那就非常容易掉进-INVALID_USER_SCODE的坑里,一时间出不来。好吧,然归正传,直奔主题:
原因分析:
1.使用高德地图sdk的apk的签名与不签名的区别:
签名apk会读取menifest.xml或者代码控制的高德地图values,而不签名的apk则不会读取相应的值。具体验证可以运行下面的demo(来自高德官方分享到demo哦)
如下图:
2.产生INVALID_USER_SCODE错误的原因,官方给出的原因:如下图:
解释:一句话就是你申请的key不正确。可能原因:签名的keystore文件中的SHA1与申请高德地图使用的SHA1不一致导致。
解决办法:读取keystore文件中的SHA1的值,用该值去申请高德地图对应的key,问题就可以迎刃而解了哦。
实操步骤(windows开发环境下): 1)将签名文件拷贝到C:\Users\zhifakou\.android>(默认路径)下;
2)在dos窗口执行这条命令:keytool -list -v -keystore keystore文件名即可查看SHA1的值;
3)使用该SHA1的值去申请高德地图的key。
效果如下图:
参考资料:http://lbs.amap.com/dev/ticket#/faq/249。
下面给出了具体的解决详细思路图:
手机的客户端在进入后的主界面,当点击“预约用车”或者“立即用车”或者“接机/送机”按钮后,出现了“INVALID_USER_SCODE”错误,解决方法如下。
错误原因分析:由于android客户端的项目代码被修改(项目的APP名称也被修改),APP上的定位功能使用高德的API,运行后出现了“INVALID_USER_SCODE”的Toast提示,经过调查分析,找到了出现该问题的原因:使用高德地图的过程中,多个apk共用一个签名文件的现象,就出现了“INVALID_USER_SCODE”错误,一句话就是你申请的key不正确。造成该问题的原因是:签名的keystore文件中的SHA1与申请高德地图使用的SHA1不一致导致的。
错误解决方法:读取keystore文件中的SHA1的值(关于获取SHA1的值,不再详细介绍),用该值去申请高德地图对应的key,即在高德地图的“高德开放平台 | 高德地图API”(官网网址:http://lbs.amap.com/),如下图
替换掉文件“AndroidManifest.xml”中下面该位置处的Key值。