首页 > 解决方案 > 博览会弹出后 android .keystore 的问题

问题描述

我使用 expo 管理的工作流程构建了一个应用程序,使用 expo 创建了帐户,并让 expo 处理所有密钥库信息,即使用 expo 创建的密钥库凭据并上传到 Play 商店,但由于某种原因我的应用程序被拒绝了。我解决了这个问题,但我退出了 expo(托管 -> 裸工作流)并设法解决了此后的所有错误。我搜索了上传反应原生应用程序并按照以下步骤操作:

  1. 安装了所需的jdk版本并移动到jdk所在的路径

  2. 创建了新的密钥库 sudo keytool -genkey -v -keystore XXX.keystore -alias XXX-upload -keyalg RSA -keysize 2048 -validity 10000

  3. 使用与从 expo 生成的密钥库相同的密码输入所需的信息

  4. 将密钥库文件放在 android>app 文件夹中

  5. 按照发布的建议,对 android>app 和 gradle.properties 下的 build.gradle 进行了更改

         release {
            if (project.hasProperty('MYAPP_UPLOAD_STORE_FILE')) {
                storeFile file(MYAPP_UPLOAD_STORE_FILE)
                storePassword MYAPP_UPLOAD_STORE_PASSWORD
                keyAlias MYAPP_UPLOAD_KEY_ALIAS
                keyPassword MYAPP_UPLOAD_KEY_PASSWORD
            }
        }
    
    

signingConfig signingConfigs.release

gradle.properties 添加:

MYAPP_UPLOAD_STORE_FILE=XXX.keystore
MYAPP_UPLOAD_KEY_ALIAS=XXX-upload
MYAPP_UPLOAD_STORE_PASSWORD=XXX
MYAPP_UPLOAD_KEY_PASSWORD=XXX
  1. 在所有这些步骤之后,我从 android>app>src>main>assets>index.android.bundle 中删除了捆绑包,并使用 cd android 移动到我的项目的 android 文件夹并运行 ./gradlew clean 然后运行 ​​./gradlew assembleRelease 但得到了错误 :

任务:app:signReleaseBundle 失败

FAILURE:构建失败并出现异常。

执行 com.android.build.gradle.internal.tasks.Workers$ActionFacade 时发生故障无法从存储“XXX.keystore”读取密钥 XXX-upload:获取密钥失败:给定最终块未正确填充。如果在解密期间使用了错误的密钥,则可能会出现此类问题。

在stackoverflow上搜索了这个。甚至再次重新创建密钥库,但没有帮助。什么可以解决这个问题?

更新:我为商店密码和密钥密码使用了相同的密码,我能够创建应用程序包。但是当我提交应用程序以供发布时:它说:您的 Android App Bundle 使用错误的密钥签名。确保您的 App Bundle 使用正确的签名密钥进行签名,然后重试。您的 App Bundle 应该使用带有指纹的证书进行签名:SHA1:但用于签署您上传的 App Bundle 的证书具有指纹:SHA1:

这是因为我更改了我的密钥库吗?我们如何解决这个问题?

即使通过 expo 管理帐户将密钥库恢复到原始密钥库后,我也能够创建 .aab 但播放商店不接受该应用程序。生成错误密钥的相同错误

标签: androidreact-nativeexpoandroid-keystore

解决方案


您必须请求 Google Play 商店团队更改密钥库相关问题。但是对于 2021 年 8 月 1 日之后上传的应用,google 有一个非常漂亮的解决方案。它允许您创建上传密钥并将其上传到 Play 商店。Google 自己管理您签名的应用程序包。


推荐阅读