我已经从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。为什么我得到这个错误?

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


当前回答

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

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

其他回答

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

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

我安装了Astro文件管理器,并搜索了以前版本的apk-file,在sdcard上找到了一个,并使用Astro文件管理器删除了apk-file。

卸载应用程序就足以避免这个问题。

INSTALL_FAILED_UPDATE_INCOMPATIBLE

但有时甚至卸载消息再次被提出,它发生在Android OS 5.0 +,所以这是解决方案:

转到设置>应用程序,你会发现你的应用程序的信息:

“未为此用户安装”

我们必须手动卸载所有用户!,然后我们就可以安装编译好的应用程序了。

另一个选项:

删除旧的应用程序并重新安装。 使用Android调试桥命令: adb卸载[包名]

如果APK是内置在Android项目中。可文件。可能是因为签名证书被更改了。

在我的问题中,我添加了LOCAL_CERTIFICATE:=平台。因为原来的apk签名时没有这个标签。

对于MIUI用户,除了通常的USB调试选项,请确保启用这些设置:

通过USB安装 USB调试(安全设置)

然后再次尝试安装app时接受提示。