当我尝试在设备上安装已编译的.apk时,INSTALL_FAILED_UPDATE_INCOMPATIBLE


291

我已经从CyanogenMod 9编译了Trebuchet启动器,并尝试使用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。为什么我收到此错误?

编辑:就我而言,我尝试使用软件包管理器重新安装系统软件包。不支持该功能,因此出现此错误。错误的来源可能因您而异。


2
在某些具有多个用户功能的最新设备上,检查是否为其他用户安装了该应用程序(即访客登录)。我公司的一名测试人员在这个问题上苦苦挣扎了一个小时,当他来找我时,我也花了5到10分钟的时间,才能发现同一应用程序是在该设备的不同访客登录下安装的,所以不是在主屏幕上显示还是在设置中都不显示
Shirish Herwade

Answers:


500

这表示您要安装的应用程序已经安装。只需删除旧的,然后再试一次。


27
为我工作,但我也必须重新启动一次。
droidgren

28
我必须进入“设置”->“管理应用程序”以找到该应用程序,然后选择从那里卸载它,因为它没有在其他地方显示。
David Conlisk 2014年

23
可能还需要您从所有用户帐户中卸载(我的Nexus 10有3个用户)。
Tyler Kiser 2015年

1
@TylerKiser感谢您提出建议。
雅各布·霍洛威

1
如果我只是尝试对现有应用程序进行更新怎么办?这将删除我上次在本地保存的应用程序的所有内容
miracle-doh

184

尝试

adb uninstall package-name

这个对我有用。我已经使用Titanium Backup删除了我的应用程序。但是,我认为Titanium备份并没有完全删除我的应用程序。


1
我注意到使用DevDrawer也是一样。这工作了。
tir38

1
谢谢!这使我摆脱了无法解释的巨大头痛。不知道我是如何进入这种状态的。。。我正在Xamarin Studio和Visual Studio中调试一个应用程序,它运行良好,直到出现问题为止。
Jamie 2015年

1
当接受的答案上的所有其他方法都失败时...就可以了。
DennisWelu 2015年

大!简单容易。无需使用此解决方案重新启动。
taciosd 2015年

这个对我有用。在尝试手动卸载和重新引导之前,什么都没有改变,只有使用adb命令才能起作用。谢谢。
ricky.tribbia

101

卸载应用程序就可以避免此问题。

INSTALL_FAILED_UPDATE_INCOMPATIBLE

但有时甚至会再次出现卸载消息的情况,它发生在Android OS 5.0 +中,因此这是解决方案:

转到Settings> Apps,您将找到包含以下消息的应用:

“未为此用户安装” 在此处输入图片说明

我们必须为所有用户手动卸载!,然后我们可以毫无问题地安装编译后的应用程序。

在此处输入图片说明

另一种选择:

  • 删除旧的应用程序,然后重新安装。
  • 使用Android调试桥命令:

    adb卸载[PACKAGE NAME]


2
谢谢!这就是我所需要的。他们为何以及何时开始采用这种方式?
尼克

显然是因为OS 5.0 +
Jorgesys,2015年

1
最初,在“设置”->“应用”下找不到卸载的应用。事实证明,在Lollipop 5.1.1中,卸载的应用程序是按程序包名称而不是应用程序名称列出的。因此,如果您执行adb卸载,而adb安装仍然失败,请在程序包名称下查找已卸载的应用程序。因此,com.acme.wileycoyote将按字母顺序列在“ c”下,而不是在“ w”下。
Yojimbo

谢谢,那行得通!我的手机没有“为所有用户卸载”选项,我通过登录所有用户来卸载...
DawnYu

1
当用户恰好是一个用户时,什么“所有用户”-ME!无论如何,它都能运作-赞成。
WindRider

21

两种可行的方法

1:手动从移动设备上卸载应用

2:打开命令提示符,跟踪路径adb并执行以下命令

adb uninstall your_package_name

2
适用于无显示设备的唯一方法。
DenisKolodin's

1
例如:“ adb卸载net.gavin.hello”,其中包名称在AndroidManifest.xml上为“ package =“ net.gavin.hello””
Gavin Simpson,

9

我刚刚重命名了程序包,它对我有用。

或者,如果您使用的是Ionic,则可以删除该应用程序,然后重试,当ionic检测到您要部署的应用程序不是来自同一内部版本时,就会发生这种情况。当您从PC更改时,通常会发生这种情况。


没有其他为我工作。感谢你这么好的想法!
肯·佩斯皮萨

2
太多的工作,我要备份并删除apk并重新安装。
pevik

在Android 6.0.1上无法正常工作。必须删除设备上的应用程序,然后重新安装相同的软件包。
kakyo

13
“我刚刚重命名了程序包”,这无法解决,实际上您正在创建另一个应用程序!
Jorgesys

8
  1. 转到:您的adb文件夹\ sdk \ platform-tools \
  2. 输入cmd
  3. 类型:在命令窗口上重新安装adb
  4. 亚行外壳
  5. su
  6. rm /system/app/YourApp.apk
  7. 重启设备

重新安装什么?我可以使用此保持发布和调试版本,以及轻松地安装和重新安装它们吗?
piotrek1543

2
没有太大意义,因为用户apk未存储在其中,/system/app而是/data/app
m0skit0

@ piotrek1543将adb remount系统分区重新安装为读写模式,而不是默认的只读模式。
m0skit0

8

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


1
同样在这里。尝试测试更新过程。因此,卸载不是一种选择。
马丁

6

这可能是因为您的设备中有多个用户,而您刚刚删除了一个用户的应用程序(其他用户仍然看到apk)。

我已经删除了所有帐户,此后它仍然有效。


您是说Google帐户吗?
CACuzcatlan

是的,正是我的意思。
neteinstein

5

如果您使用其他证书签署应用程序,则可能会发生这种情况。您可以随时使用

adb install -r myapk.apk

覆盖设备上现有的apk,但是如果您使用已安装的apk的其他证书对新apk进行签名,则仍然会收到错误消息。

在这种情况下,您需要从设备上卸载apk,然后再尝试安装。但是,这也会影响您的应用程序,因为您的原始签名可能与某些Developor API绑定在一起,因此您可能需要使用新的凭证更新控制台。


4

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


4

如果您的设备支持多个用户,则可能还必须删除每个帐户的应用程序。

我通常使用adb,这可以解决问题 adb uninstall <your-package-name>


4

如果APK是使用Android.mk文件在项目中内置的。也许是因为签名证书已更改。

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


这实际上是评论,而不是答案。有了更多代表,您就可以发表评论
Enamul Hassan

2

就我而言,没有可以通过设备管理器或Astro找到的App版本。

我最终要做的是:

1)从App Store下载最新版本的App

2)在重新启动设备之前,该应用在设备管理器中仍然不可见。

3)从设备管理器中删除该应用程序

4)再次运行我的项目

5)一切正常

希望这可以帮助某人


2

C:\ android-sdk \ platform-tools \ adb.exe:命令失败,退出代码为1

错误输出:adb:无法安装app \ platforms \ android \ app \ build \ outputs \ apk \ debug \ app-debug.apk:失败[INSTALL_FAILED_UPDATE_INCOMPATIBLE:打包com.example。app1签名与先前安装的版本不匹配;忽略!]

解:

您已经app1在手机上安装了该应用程序(主要是从播放控制台下载,或者更改了上传密钥)

更多细节:

您可能已经使用上载密钥将该应用上载到了Play商店,Play控制台对其应用了自己的签名。因此,您手机中从Google Play下载的应用没有与您的上传密钥相同的签名。

通过卸载应用程序,没有应用程序的Play商店版本,因此在将新版本安装到手机时会出现不匹配的情况。

希望能有所帮助。



1
  1. 转到设置/应用/搜索您的应用并卸载...
  2. 打开命令提示符和“ adb卸载”

对我有用


1

对于MIUI用户,除了通常的USB调试选项外,还请确保同时启用以下设置:

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

然后在再次尝试安装应用程序时接受提示。


1

我遇到了同样的问题,并做了以下修复。

  1. 设置>存储>清除缓存的数据
  2. 设置>应用>卸载此处显示的应用。我已经卸载了我的应用程序,但是它在那里显示。
  3. 重新启动,然后一切正常。

3
第二点有所帮助。就我而言,该应用程序不是为当前用户安装的,而是为其他用户安装的。因此,我单击了“应用程序”列表中的应用程序,然后在详细信息页面中单击了“更多”按钮(三个垂直点)。在那里,它具有“为所有用户卸载”选项。对我来说就做到了。谢谢!
Harisewak '18

1

我只花了一个小时尝试调试它,然后意识到我已连接到模拟器而不是手机。因此,即使我成功删除了手机上的应用程序,它仍然失败。愚蠢的错误,但这也许会对其他人有所帮助。


0

就我而言,我已经从Playstore安装了Application,并且当我尝试从EclipseAndroid Studio运行时,因此它将尝试在不允许的APK上再次安装。

因此,首先您必须卸载该Siged APK,然后再尝试。

谢谢。


0

RankoR @您必须从另一台计算机安装了该应用程序。在我的情况下就是问题出现了..您要做的就是卸载应用程序并重新安装它或从您正在工作的计算机上运行它..这可能是一个较晚的答复,但是会有所帮助..谢谢


0

当我使用Instant Run安装开发版本并从Google Play卸载时,这发生在我身上。由于某些原因,Instant Run中的数据仍在设备中,无法再次安装/卸载应用程序。

修复此错误的唯一方法:-在android studio中禁用即时运行-从android studio安装(只能从此处运行)-卸载应用

现在可以从Google Play或adb安装了。



0

如果您的清单文件包含这一行-

android:sharedUserId =“ android.uid.system”

导致此错误!只需评论此行,您就可以开始了!


0

我看不到有人提到我的案例,所以让我添加一下-当您以一种模式(例如Dev)构建应用程序,然后尝试以其他模式(例如Production)覆盖它时会发生这种情况。

解决方案与其他情况相同-删除设备/模拟器上的应用,然后再次运行。


0

如果您尝试从与原来不同的计算机上进行调试,则会出现可怕的INSTALL_FAILED_UPDATE_INCOMPATIBLE错误。但是,有一种方法可以继续进行,而无需卸载应用程序并丢失数据。

若要查看如何传输所需的debug.keystore,这样您将不会收到消息“该设备已经有一个具有相同应用程序但签名不同的应用程序。要继续,您将必须卸载现有应用程序。” (并丢失您的数据)。请参阅在Android中使用相同的debug.keystore在另一台机器上更新应用程序


0

三星 Galaxy手机具有解决此问题的称为“ 安全文件夹删除应用程序” 的功能。

同样,adb卸载程序包名称也无法从安全文件夹中删除应用程序。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.