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

Android: Can't overwrite existing app with new version

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

如果两个 APK 具有相同的应用程序 ID,则不能同时安装在设备上。模块名称无关紧要,不同的签名密钥只会强制执行完整的 uninstall/reinstall 而不是更新。

仔细检查您的应用程序 ID 是否有小错别字。

还要检查您的 build.gradle 中是否定义了 applicationIdSuffix。将 .debug 之类的内容附加到调试版本中是很常见的,这样您就可以在设备上同时安装调试版本和发布版本。如果是这种情况,请确保您正在尝试使用发布版本进行升级。

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