使用SHA1指纹校验APK代码完整性时签名包SHA1不匹配问题排查
问题原因及解决办法
核心原因
你遇到的SHA1不匹配,大概率是应用签名密钥和上传密钥分离导致的:
- 当使用Google Play App Signing(当前为默认开启机制),上传App Bundle到Play后,Google会用它管理的「应用签名密钥」重新签名最终分发的APK,而你本地记录的是自己的「上传密钥」SHA1,两者自然不一致。
- 另外,Bitrise构建如果是直接打包App Bundle并上传Play,最终用户安装的APK也是Google重签后的,SHA1和你本地release密钥的不一样;如果是Bitrise直接打包签名APK,要确认Bitrise用的签名密钥和你本地测试的
release-keystore完全一致。
解决步骤
1. 获取正确的SHA1值
如果通过Google Play分发应用:
- 登录Google Play控制台,进入你的应用 → 「应用签名」页面,找到「应用签名证书」的SHA1指纹,把这个值配置到
local.properties中,替换原来的上传密钥SHA1。
如果直接分发APK(不走Play): - 确认Bitrise构建时使用的签名密钥(包括密钥库文件、密码、别名)和你本地测试的
release-keystore完全一致,然后用这个密钥生成的SHA1配置到项目中。
2. 校验SHA1的格式一致性
检查你的byte2HexFormatted方法生成的字符串格式,和配置的PROD_SHA1_SIGNATURE是否一致:
- 比如是否带冒号(
AA:BB:CC...vsAABBCC...)、大小写(大写vs小写),这些细微差异都会导致匹配失败,统一两者格式即可。
3. 代码逻辑优化(可选)
如果需要同时兼容本地测试和Play分发场景,可以把预期SHA1做成数组,只要匹配其中一个就通过;若你坚持只用一个值,确保配置的是最终用户安装APK对应的签名密钥SHA1即可。
内容的提问来源于stack exchange,提问作者user21300258
相关产品推荐
相关产品推荐

