一、起因
之前没有经验,所以跟发行合作时制作的发行平台所需的游戏 apk 还有 google play 所需的 apk 都是用的相同的包名和签名。此时游戏主要在发行的平台进行推广,gp 端则跑自然量。
后来有另一家发行看上了这个游戏,想要通过买量的方式先测试下 gp 端的数据。
通过和第一家发行交流后,得到的结果是需要将 google play 上游戏包体的签名改成新签名,并且保持包名不变。
于是就有了以下的一顿捣鼓。
二、应用完整性
根据发行方提供的方法,首先需要在 Google Play 后台找到 应用完整性 标签,并修改 自动保护 和 商品详情的公开范围 这两个服务。具体是什么原因没有细查,也不是本文的主要内容。

三、应用签名


如图所示,需要修改的就是这个应用签名密钥证书。
该页面设计到两个密钥证书:一个是 应用签名密钥证书,一个是 上传密钥证书。
通常我们自己打包 aab 包时使用的 keystore 就是这个 上传密钥证书,该证书是为了让 Google 能够知道更新的 aab 包确实是由其开发者提供的。
而 应用签名密钥证书 才是用户从 google play 下载的游戏对应的签名。
到了这里就会出现一个问题:由于新游戏上传 google play 时会加入那个开发者计划,此时 google play 会默认生成一个新的 应用签名密钥证书,而这个证书跟我们打包游戏时自带的 keystore 是不一致的,按说已经满足了发行方同包名不同签名的需求。
但奈何发行那边说还是要更新,那就只能继续搞。
四、更新 应用签名密钥证书 的好处
后续通过查看资料发现更新这个 应用签名密钥证书 还有两个好处。
1. 保持签名的安全性
理论上来说当前游戏签名密钥即使是 SHA-256 加密也还是存在风险的,所以定期更换签名可以提高安全性。
但是实际上我们的游戏还没到那种被人惦记的程度。
此外,更新了 应用签名钥匙证书 后,使用旧证书的 apk 用户就无法自动更新了,所以如果已经有了大量玩家基数的游戏需要谨慎更新。
2. 可以将 应用签名密钥证书 和 上传密钥证书 统一
默认新游戏上传时 gp 会自动生成一个 应用签名密钥证书,该证书和 上传密钥证书 是不同的,这可能会造成一些问题。
根据此篇文章所说,这种签名不同的状况会导致本地调试版本与线上版本签名不一致,第三方服务(如登录、支付)因校验签名失败而无法正常使用。
五、升级应用签名密钥
选择 从 Java 密钥库上传新的应用签名密钥 之后安装步骤来。

比较重要的是以下命令
$ java -jar pepk.jar --keystore=foo.keystore --alias=foo --output=output.zip --signing-keystore=uploadkey.keystore --signing-key-alias=upload-key-alias --rsa-aes-encryption --encryption-key-path=/path/to/encryption_public_key.pem
pepk.jar 是一个应用签名工具,全名:Publicly Exposed Private Key
此时可能会遇到问题。
1、可以看到需要用到 foo.keystore 和 uploadkey.keystore 两个 keystore 文件。
经过查看 pepk.jar 的 help 内容,这个 foo.keystore 应该就是我们需要的新的 应用签名密钥证书,而 uploadkey.keystore 则是 上传密钥证书。
所以如果需要将证书统一,就只需要在对应的位置使用相同的 keystore 文件就可以了。
这么做的前提条件是需要先重置 gp 的 上传密钥证书,否则新生成的 .zip 文件无法上传。
上传密钥证书 的相关操作很简单,跟着提示搞就行。
2、想方便一些就将需要的文件都放在一个路径中,然后通过 cmd 进入该路径后再执行命令。
例如:
$ cd D:\ChangeKeystore
$ java -jar pepk.jar --keystore=new_gp_keystore.keystore --alias=new_gp_keystore_alias --output=output.zip --signing-keystore=new_gp_keystore.keystore --signing-key-alias=new_gp_keystore_alias --rsa-aes-encryption --encryption-key-path=encryption_public_key.pem
意思是在 D 盘 创建一个 ChangeKeystore 的文件夹,将下载的 encryption_public_key.pem、pepk.jar 文件和新制作的 new_gp_keystore.keystore 文件放入里面,通过 cmd 进入后执行命令,生成的 output.zip 也会生成在这个文件夹内,而 output.zip 就是我们需要上传的文件。
3、报错:Cannot find any provider supporting RSANE/OAEPWithSHA1AndMGF1Padding
可能在执行命令时遇到这个报错,相关问题是由于 jdk 等级太低导致的,可以参考这篇文章升级 jdk。之后就可以正常制作 output.zip 文件了。
更新完成后,就可以发现 GP 后台这两个密钥证书的参数已经一致了。
六、等待和打包
更新 应用签名密钥证书 后,就可以打新的 aab 包了,由于也更新了 上传密钥证书,所以打包时使用的 keystore 也要替换成 new_gp_keystore.keystore。如果此时将新 aab 包传上去会有报错,原因是更换了证书需要等几天才会同步完成,之后就可以把新包传上去了。
PS:需要注意的是,每年只能更新一次这个 应用签名密钥证书,所以更新的时候需要格外谨慎。
3142

被折叠的 条评论
为什么被折叠?



