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。
我正在开发现有应用的新版本。这是一次彻底的重新设计,因此我为此更新创建了一个单独的项目。现在我需要测试从 v2(旧版本)升级到 v3(新版本)时应用程序的行为。这两个项目具有相同的 applicationId、模块名称,并且由相同的密钥签名。但是,当我安装 v2,然后安装 v3 时,旧的应用程序并没有被覆盖;我最终安装了两个。我错过了什么导致 Android 将这些应用程序视为不同的?
如果两个 APK 具有相同的应用程序 ID,则不能同时安装在设备上。模块名称无关紧要,不同的签名密钥只会强制执行完整的 uninstall/reinstall 而不是更新。
仔细检查您的应用程序 ID 是否有小错别字。
还要检查您的 build.gradle 中是否定义了 applicationIdSuffix
。将 .debug
之类的内容附加到调试版本中是很常见的,这样您就可以在设备上同时安装调试版本和发布版本。如果是这种情况,请确保您正在尝试使用发布版本进行升级。
您还可以在 Toast 中记录(或显示应用程序 ID)以验证它们是否不同以及您所期望的。只需调用 BuildConfig.APPLICATION_ID
即可获取当前应用程序 ID。