安装失败:INSTALL_FAILED_UPDATE_INCOMPATIBLE:包签名与先前安装的版本不匹配;忽略。

33
当我试图为设备上的应用程序生成调试apk以进行直接更新(Android - React Native)时,出现以下错误:

执行任务“:app:installDebug”失败。

com.android.builder.testing.api.DeviceException:com.android.ddmlib.InstallException:无法完成会话: INSTALL_FAILED_UPDATE_INCOMPATIBLE:Prensa.com软件包签名与先前安装的版本不匹配; 忽略!

我确定版本代码和版本名称已经增加,并且包名称相同。
此外,密钥库和其他密钥与之前使用的相同。
错误在哪里?

2
这意味着您已经安装了它。尝试删除应用程序的旧实例并重新安装。 - Dan
设备上的应用程序版本代码为1,版本名称为1.0。新的apk版本代码为2,版本名称为1.1。它应该更新,对吗? - Jhonmer Araujo
1
很遗憾,它不是根据版本号/名称进行安装,而是根据包名。安装两个具有相同包名的应用程序将被简单地禁止。 - Dan
7个回答

64

如果你的旧应用程序没有完全删除或其数据没有被删除,以下是一些尝试方法:

尝试:

adb uninstall "com.yourapp.yourapp"

很好!对我来说,在Linux上是adb uninstall io.ionic.starter - ramsey_lewis
卡住了两个小时。谢谢 :) +1 - Mathias Bradiceanu
但是,如果你要迁移到一个新版本,同时想保留旧数据呢? - MetaStack

6

这是因为我试图在已安装生产版本的手机上安装调试版本。换句话说,已安装的应用使用了release.keystore文件签名,而调试版则使用debug.keystore文件签名。

所以我只需卸载该应用程序,以便安装已使用debug.keystore 文件签名的应用程序。


5

确保您知道adb正在处理哪个设备。

我有多个设备可用。我不明白为什么在模拟器上卸载应用程序后仍然不能摆脱该消息。原来我的硬件手机插在电脑上充电,同时启用了USB调试,这让adb感到困惑。

关闭我硬件手机的USB调试并在模拟器上卸载该应用程序就解决了问题。


4
今天我遇到了同样的错误。我发现了这篇文章http://blog.bihe0832.com/android-v2-issue.html,它是中文的。以下是关键点:
在打包apk文件后,解压它并检查文件META-INF/ANY-NAME.SF。我使用命令行工具jarsigner签署apk文件。当执行jarsigner时,放在jar文件后面的别名将用作ANY-NAME。然后打开ANY-NAME.SF文件,如果你发现X-Android-APK-Signed: 2这一行,那就是出错的原因。重新签署你的apk文件,如果代码行消失了,apk将安装成功。

3

INSTALL_FAILED_UPDATE_INCOMPATIBLE

安装失败:更新不兼容。请卸载之前的APK并重新安装更新后的APK。

gradlew clean

npm start -- --reset-cache

react-native run-android

“gradlew clean” 有点令人困惑。从项目目录运行“cd android && ./gradlew clean”。 - Satish Gaurav

2
如果您已经在设备上安装了应用程序,请通过删除应用程序并重新运行npx react-native run-android卸载它

希望这有所帮助。


0

我在将React Native版本从0.59.0升级到0.59.8后遇到了问题。手动从设备中删除应用程序,然后运行react-native run-android解决了我的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接