我已经从CyanogenMod 9编译了Trebuchet launcher,并试图用adb安装它:

$ adb install out/target/product/generic/system/app/Trebuchet.apk
3986 KB/s (7870141 bytes in 1.928s)
    pkg: /data/local/tmp/Trebuchet.apk
Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]

我用CM9试了Nexus S,用JB试了Galaxy Nexus。为什么我得到这个错误?

编辑:在我的情况下,我尝试用包管理器重新安装系统包。这是不支持的,所以我得到这个错误。在不同的情况下,错误的来源可能不同。


当前回答

您必须为应用程序签名,然后运行它!

如果您正在为您的应用程序准备一个新的更新,继续工作是没有问题的。最后,在发布准备好的版本之前,当您签署应用程序时,问题将得到解决,用户安装应用程序将没有任何问题。

其他回答

它发生在我身上,当我安装了一个开发构建使用即时运行,并从谷歌播放卸载。由于某种原因,即时运行的数据仍然在设备中,无法再次安装/卸载应用程序。

唯一的解决办法是: -在android studio中禁用即时运行 -从android studio安装(它应该只在这里工作) -卸载app

现在应该可以从谷歌Play或adb安装了。

我没有看到任何人提到我的情况,所以让我加上它-当你在一种模式下构建应用程序(例如开发),然后尝试用不同的模式(例如生产)覆盖它时,它就会发生。

解决方案与其他情况相同-删除设备/模拟器上的应用程序并重新运行。

C:\android-sdk\platform-tools\adb.exe:命令失败,退出码为1 错误输出:adb: failed to install android应用程序平台\ \ \ \ apk \调试\ app \制造\输出app-debug.apk: 失败[install_failed_update_compatible: Package . sh com.example。App1签名与之前安装的不匹配 版本;忽略!]

解决方案:

你手机上已经安装了app app1(大多是从play控制台下载,或者上传键更改) 卸载应用程序。

更多的细节:

这是可能的,你已经有这个应用程序上传到播放商店使用上传键,播放控制台应用自己的签名。这就是为什么从谷歌play下载的手机应用程序没有与你的上传密钥相同的签名。

通过卸载应用程序,没有游戏商店版本的应用程序,所以不匹配当你安装一个新版本到你的手机。

希望这能有所帮助。

如果您试图从不同于最初的计算机上进行调试,则会得到可怕的install_failed_update_compatible错误。但是,有一种方法可以在不卸载应用程序和丢失数据的情况下进行。

查看如何传输调试文件。这样您就不会得到“该设备已经有一个具有相同应用程序但签名不同的应用程序”的消息。为了继续,你必须卸载现有的应用程序。”(并丢失你的数据)。请参见在另一台机器上使用相同的调试更新应用程序。android中的密钥存储库

问题是为什么他会得到这个错误。卸载将解决这个问题,但在我的情况下,当我安装apk的编译版本时,问题就出现了。我在试着更新我的应用程序。所以我做了什么,我建立了一个签名的apk,然后尝试安装apk, apk安装完美。因此,我不得不删除旧的apk,而是签署更新后再安装它。