这是一个jdk bug引发的安卓sha1安全码配置错误惨案
配置高德地图api时,遇到了一个奇葩问题,明明app的sha1安全码是跟着文档来的,偏偏定位失败,而且提示INVALID_USER_SCODE 、ErrorCode = 7
排查了半天,居然发现是jdk里面的keytool.exe工具有问题,问题jdk:openjdk-8u292-b10(AdoptOpenJDK编译的)
,测了几个 ,Amazon、IBM的 jdk8 也是一样的问题
但是!!!Oracle JDK是正常的,果然,甲骨文还是修复了一些bug的
这个版本的keytool 工具在查看app签名文件时,误将sha1证书指纹展示为md5,正常的md5
是32位字符(去掉冒号),这里是40位,而SHA1
实则是 SHA256
,至于SHA256为什么是SHA256withRSA
,天知道。如图:
最终,悲剧了。改安装别的jdk版本,再来获取吧~
除了Oracle JDK正常,国内JDK中,阿里的JDK也是正常的:
https://dragonwell.oss-cn-shanghai.aliyuncs.com/8/8.3.3-GA/Alibaba_Dragonwell_8.3.3-Experimental_Windows_x64.tar.gz
其他正常的JDK8没找到
附一个正常的图: