【问题标题】:Android - "Application not installed" - cannot update with new apk - React NativeAndroid - “未安装应用程序” - 无法使用新的 apk 更新 - React Native
【发布时间】:2017-10-14 02:58:36
【问题描述】:

我目前在 Play 商店中有 React Native 应用程序。一个月前完成的步骤:

    1. 我使用 keytool 生成了私有签名密钥
    2. 我生成了名为 prod.keystore 的 kestore(记住的别名)
    3. 将我的 prod.keystore 放在 android/app 目录中
    4. 使用正确的密钥库密码、别名和密钥编辑 ~/.gradle/gradle.properties
    5. 编辑文件 android/app/build.gradle 以添加签名配置
    6. 运行 cd android && ./gradlew assembleRelease 获取 apk 成功将 apk 上传到 Play 商店

今天对我的代码进行了一些更改后,我使用相同的 prod.keystore(具有相同的密钥库密码、别名和密钥)生成了新的 apk。在此之前我在 Androidmanifest.xml 和 build.gradle 中增加了 android versionCode。

我有从 Playstore 安装的旧版应用程序。生成新的 apk 后,我尝试将其安装到我的手机上。我预计更新会完成,但在尝试安装后,我收到消息“未安装应用程序”。 adb install new-apk-name.apk 给了我更详细的错误 INSTALL_FAILED_UPDATE_INCOMPATIBLE

我不想卸载该应用并重新安装。我希望能够在上传到商店之前更新应用程序并对其进行测试。有人知道为什么这不起作用吗?

【问题讨论】:

    标签: android react-native google-play apk react-native-android


    【解决方案1】:

    解决方案

    1. 卸载从 Play 商店下载的应用
    2. 安装新的 apk

    仔细检查更新是否适用于用户

    使用以下清单确保您的新 APK 已准备好更新现有用户:

    更新后的 APK 包名需要与当前版本一致。 版本代码需要大于当前版本。了解有关对应用程序进行版本控制的更多信息。 更新后的 APK 需要使用与当前版本相同的签名进行签名。 要验证您的 APK 是否使用与之前版本相同的认证,您可以在两个 APK 上运行以下命令并比较结果:

    $ jarsigner -verify -verbose -certs my_application.apk
    

    如果结果相同,则说明您使用的是相同的密钥并准备好继续。如果结果不同,则需要使用正确的密钥对 APK 重新签名。

    有关更多信息,请查看 Google 的文档here

    【讨论】:

    • 我不想那样做。这样可行。我想确保当用户从 Play 商店下载新版本的应用程序时更新能够正常工作。
    • Google 会为您处理。如果想仔细检查,请按照 Google 的说明进行操作here
    • jarsigner -verify -verbose -certs my_application.apk 向我展示了我的证书的不同之处。谷歌播放似乎增加了额外的签名。上传到商店后更新成功!
    猜你喜欢
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多