解决GooglePlay 二次签名导致的第三方sdk签名不对应的问题; 网上找了几个解决办法都是旧版本了,无法使用,此处为最新版。

针对这个问题GooglePlay提供了一次更新签名的机会。
在google console后台找到对应app,从App Integrity中找到App Signing的Setting,找到升级App签名,注意⚠️:只有一次机会。

点击Request key upgrade 
按照提示操作后会报错:Cannot find any provider supporting RSA/NONE/OAEPWithSHA1AndMGF1Padding
js
Error: Unable to export or encrypt the private key
java.security.NoSuchAlgorithmException: Cannot find any provider supporting RSA/NONE/OAEPWithSHA1AndMGF1Padding
at java.base/javax.crypto.Cipher.getInstance(Cipher.java:571)
at com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.encryptPrivateKeyWithCkmRsaAesKeyWrapEncryption(ExportEncryptedPrivateKeyTool.java:284)
at com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.run(ExportEncryptedPrivateKeyTool.java:213)
at com.google.wireless.android.vending.developer.signing.tools.extern.export.ExportEncryptedPrivateKeyTool.main(ExportEncryptedPrivateKeyTool.java:165)
报错后,点击下载源码

源码里找到ExportEncryptedPrivateKeyTool文件,RSA/NONE/OAEPWithSHA1AndMGF1Padding,替换为:RSA/ECB/OAEPWithSHA1AndMGF1Padding

接下来把代码重新打包成jar
js
cd pepk-src && rm -f pepk-tool.jar && jar cvfm pepk-tool.jar MANIFEST-NEW.MF -C out/production/pepk-src/ . 2>&1 | head -20
找到生成的pepk-tool.jar,需要用新版java,此处我用的jdk 22,低版本会报错。 如果同时安装了几个版本的java,可以用/usr/libexec/java_home -V,会打印你的java路径,使用全路径的java来执行以下命令,或者更新JAVA_HOME。

encryption_public_key.pem就是最开始按照google提示下载下来的文件。
js
/Library/Java/JavaVirtualMachines/openjdk-22.0.2/Contents/Home/bin/java -jar /Users/xxx/Downloads/pepk-src/pepk-tool.jar --keystore=你要更新的keystore.keystore --alias=你的别名 --output=output.zip --signing-keystore=你要更新的keystore.keystore --signing-key-alias=你的别名 --rsa-aes-encryption --encryption-key-path=/Users/xxx/Downloads/encryption_public_key.pem
执行此命令,按照提示输入密码等信息,找到输出的output.zip,上传就好了,大功告成!