常见审核问题
相信很多开发者肯定遇到过由于签名的问题导致应用审核被拒的情况,比如:
-
新版本和在架版本签名不一致
-
微信等账号登录、支付提示签名和平台配置不一致
-
集成HMS的相关服务如PUSH失败,map地图加载不出来,原因是证书指纹不匹配
-
应用上架后,不同渠道应用更新不了,提示签名不一致
等等
而你肯定有疑问,明明签名一致,自己本地测试也没有问题,为什么一到华为审核就被拒???如果你有遇到以上问题,那你很可能是华为AGC的应用签名服务对你应用进行了重签名导致的。
什么是应用签名?
要解决这些疑问,先要了解什么是应用签名?
网上一大堆资料,反正记住以下两点:
-
签名很重要,应用必须要有签名,没有签名不让上架。
-
签名不能变,一旦变了,很多东西全乱套了,证书指纹会变,鉴权会变,应用更新不了等。反正依赖签名的很多服务都无法使用。
所以一般开发者在开发应用的时候都会使用Android Studio或者命令的方式给应用签名。
什么是AGC应用签名服务?
而AGC应用签名服务是干嘛的呢?说白了就是AGC提供了另一种给你的应用签名的方式!
一共有两种方式:
第一种是AGC完完全全给你的应用生成新签名。签名一定会改变,而且是宇宙唯一的。
对应界面叫做:“让 AG Connect 创建并管理我的应用签名密钥”
为什么仅适用于新应用呢?刚刚前面讲到,这种方式AGC会给你生成一个新的签名,如果你已经有在架应用,那使用这种方式不可能生成一个和在架应用一样的签名了,所以当然用不了。
第二种是你自己上传签名文件,AGC不会给你生成新的签名,只是使用你上传的签名文件给你的应用签名。至于新的签名是什么,取决于你上传了什么,AGC只是保管一下。对应界面叫做:“导出并上传密钥和证书”
就是说你自己使用某个工具和命令把你的签名导出成一个zip包的签名文件,然后上传到AGC,AGC用这个签名文件给你应用签名。所以你要是有在架应用的话,一定要传一个和在架应用一样的签名文件,否则你的应用最终新老版本签名就不一致了。
值得注意的是,目前这种方式已经支持校验能力,如果传的签名和在架版本不一样就会提示,且不允许上传。
举个例子,你有一款应用,自己本地用Android Studio签名的,假设应用的签名是A,然后你使用了AGC的应用签名服务,选择第一方式,那AGC会生成一个新的签名B,你的应用上架审核和最终发布时签名就被改成B了。所以很可能你本地测试时签名是A,审核测试时应用的签名是B。
如果你选择第二方式,你需要传一个zip的签名文件,如果zip文件是通过是签名A生成的,最终你的应用上架审核和发布时签名就是A;如果是B生成的,签名就是B;是C生成的,签名就是C。反正就是你传啥最终签名就是啥。
如何选择?
所以小伙伴千万不要选错了,也不要传错了。那应该怎么选择呢?其实也很简单。
一般来说,新应用如果只考虑在华为上架那就选第一种方式;如果要在多个渠道商店上架,那就选第二种方式,并且上传和其他商店一样的签名文件。如果有些鉴权支付等服务依赖签名,那就选第二种方式。
已上架应用的话只能选第二种方式了,只要保证你传的签名文件和在架版本一样就可以。
讲到这里,再回到最初的问题就知道很可能是选错了签名方式,或者传错了签名文件导致应用签名被改变了。遗憾的是签名服务一旦使用不支持删除,当前的解决方案只能是通过删除应用来删除签名,然后重新创建应用,选择正确的签名方式、上传正确的签名文件。
题外话:
-
应用签名≠应用签名服务;签名是必须的,应用签名服务是可选的。
-
APK包可以选用应用签名服务,AAB包必须要用。
-
签名变了,对应证书指纹也会改变,依赖的服务需要配置新的证书指纹。
欲了解更多详情,请参见:
AGC应用签名服务:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/agc-app_bundle
原文链接:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0202381566447710293&fid=0101271690375130218
作者:鼓楼赵又廷