背景
- GooglePlay 签名保护计划,默认推荐使用Google签名,导致 GooglePlay 安装的App最终使用的是 Google 签名;
- 对于有多个渠道的App,不同渠道的签名不一致,但是微信开放平台一个应用只支持配置一个签名,Google渠道由于签名保护计划使用了Google生成的签名,导致微信分享提示签名不一致;
- Google提供了签名升级,升级为自己的签名,但微信分享还是提示签名不一致;
原因
- 通过反编译 微信官方提供的签名工具(https://res.wx.qq.com/wxdoc/dist/assets/media/Gen_Signature_Android.e481f889.zip),发现微信获取三方App签名使用的是 PackageInfo.signatures 字段,该字段已被丢弃,在 v3签名包含多个签名时,获取到的是旧的签名;新版 Android SDK 推荐使用 PackageInfo.signingInfo.getApkContentsSigners() 和 PackageInfo.signingInfo.getSigningCertificateHistory(),会包含 v3 签名的多个签名信息;
解决方案
- 微信开放平台支持一个App配置多个应用签名;
- 签名验证过程替换新API做校验(原因部分提到的);
总结
- 整体看下来,还是得微信官方来解决这个问题,我看微信开放社区很多人都遇到了该问题(有些是一年前提的问题,到目前没有满意答复),都没得到解决,希望微信官方能解决下这个问题,拜托🙏