我尝试更新应用程序时失败[INSTALL_FAILED_ALREADY_EXISTS]

Dro*_*Bot 374 android install

当我尝试使用与前一个版本具有相同签名的新版本更新我的applcation时,显示上述错误.

我错过了什么?

War*_*ith 733

如果您通过应用程序在设备上安装该应用程序,则adb install应该查找应该重新安装的选项-r.所以,如果你这样做,adb install -r你应该能够在不卸载之前安装.

  • 我来到这里是因为我想知道`adb install -r`是先删除然后再安装或升级我的应用程序.虽然`adb`的描述不是很清楚(_-r:替换现有的application_),但'adb install -r`确实升级了你的应用程序并且没有删除你的app数据.因此适合测试升级您的应用程序(这是我正在寻找的信息). (14认同)
  • 对于声称`adb install -r`的人不起作用:我想您尝试安装的`.apk`文件没有使用与设备上安装的`.apk`文件相同的开发人员证书进行签名.如果您已安装Debug应用程序然后尝试安装Release应用程序或其他方式,则很容易发生.如果应用程序未使用相同的证书进行签名,则无法更新该应用程序. (7认同)

Muh*_*hir 11

您收到该错误,因为包含名称与您的应用程序相同的应用程序已存在.如果您确定以前没有安装过相同的应用程序,请更改软件包名称并尝试.

其他明智的,这是你可以做的:

  1. 从设备卸载应用程序:转到设置 - >管理应用程序,然后选择卸载或
  2. 使用adb命令行界面卸载应用程序:键入adb uninstall完成此步骤后,请尝试再次安装该应用程序.

  • 这不是一个好的解决方案。如果您在应用程序中保存了一堆状态,例如SharedPrefs,该怎么办?如果您要从系统中进行硬卸载,则必须重新配置应用程序! (2认同)

Gre*_*egP 6

这可能意味着已经为您设备上的其他用户安装了该应用程序.用户共享应用程序 我不知道为什么他们这样做,但他们这样做.因此,如果一个用户更新,则还为另一个用户更新应用程序.如果您在一个上卸载,则不会从另一个系统中删除该应用程序.


Gib*_*olt 5

安装

adb install -r exampleApp.apk
Run Code Online (Sandbox Code Playgroud)

-r使其替换现有副本,-s如果在模拟器上安装,则添加一个)

确保应用程序签名相同并且是相同的debug/release变体

奖金

我在我的~/.bash_profile, 中设置了一个别名,使其成为 2char 命令。

alias bi="gradlew && adb install -r exampleApp.apk"
Run Code Online (Sandbox Code Playgroud)

(构建和安装的缩写)