Android:无法用新版本覆盖现有应用

标签 android gradle android-manifest android-update-app

我正在开发现有应用程序的新版本。这是从头开始的完全重新设计,因此我为此更新创建了一个单独的项目。现在我需要测试从 v2(旧版本)升级到 v3(新版本)时应用程序的行为。这两个项目具有相同的 applicationId、模块名称,并由相同的 key 签名。但是,当我安装 v2,然后安装 v3 时,旧应用程序不会被覆盖;我最终安装了两次。我错过了什么导致 Android 将这些应用程序视为不同的?

最佳答案

如果两个 APK 具有相同的应用程序 ID,则不能同时在设备上安装两个 APK。模块名称无关紧要,不同的签名 key 只会强制完全卸载/重新安装而不是更新。

仔细检查您的应用程序 ID 是否存在轻微拼写错误。

还要检查您是否有 applicationIdSuffix在你的 build.gradle 中定义。附加 .debug 之类的内容是相当常见的。调试构建,以便您可以在设备上安装调试和发布构建。如果是这种情况,请确保您正在尝试使用发布版本进行升级。

您还可以在 Toast 中记录(或显示应用程序 ID)以验证它们是否不同以及您所期望的。只需调用 BuildConfig.APPLICATION_ID 获取当前应用程序 ID。

关于Android:无法用新版本覆盖现有应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42446363/

相关文章:

android - 由于Asyncstorage库中的警告,可以删除buildToolsVersion android studio吗?

firebase - 找不到 com.google.firebase :firebase-analytics-ktx:. 需要:项目:app

gradle - 使用gradle-git-properties插件在Kotlin DSL中进行GString惰性评估

android - 如何从Google git在Android Studio中构建项目,它没有gradle文件?

android - 从服务器下载 APK 并将其安装到设备

java - 如何使用两个主题?

java - 在 Android 上缩放图像

java - 将 rand 变量从一个类传递到具有相同值的另一个类

java - 等到任务完成

android - 如何在不要求用户在浏览器或应用程序之间做出决定的情况下从链接打开应用程序,只需立即打开我的应用程序