React Native - 您上传的 APK 未使用上传证书签名

问题描述

几个月前我上传一个 Expo 项目,我不确定我是否签署了该应用程序,但运行 expo fetch:android:keystore 会为我提供以下信息:

密钥库密码

密钥别名

密钥密码

我使用 React Native CLI 启动了一个新项目,因此我使用上述数据生成一个新的密钥库文件,但在我尝试上传发布版 APK 后,Google Play 向我显示了该错误消息

You uploaded an APK that is not signed with the upload certificate. You must use the same certificate. The upload certificate has fingerprint:
SHA1: XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX
and the certificate used to sign the APK you uploaded has fingerprint:
SHA1: YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY:YY

我做错了什么?老实说,我对 Google Play 上的应用签名并不熟悉。 如何在不更改包名称和部署新应用程序的情况下从新的 RN CLI 项目上传新的 APK?我不想失去我现有的客户。

解决方法

因此,对于遇到此问题的任何人,我所做的是将文件 app_name.jks 从 expo 项目文件夹复制到 android/app (RN CLI) 并执行命令 expo fetch:android:keystore ( Expo项目)获取Expo项目的Keystore、Alias和Password。

然后更改了 android/app/build.gradle (RN CLI)

signingConfigs {
    release {
        storeFile file('app_name.jks')
        storePassword System.console().readLine("\nKeystore password: ")
        keyAlias 'here is the alias from the command above`'
        keyPassword System.console().readLine("\nKey password: ")
    }
}

然后执行构建命令 ./gradlew assembleRelease --no-daemon,控制台日志会询问密码和密钥库密码(来自上面的 expo 命令),就是这样!

我能够使用相同的上传指纹上传到 Google Play