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

时间:2012-08-09 20:58:18

标签: android android-4.0-ice-cream-sandwich android-4.2-jelly-bean cyanogenmod

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

编辑:在我的情况下,我尝试使用包管理器重新安装 system 包。那是不支持的,所以我有这个错误。在您的情况下,错误的来源可能会有所不同。

31 个答案:

答案 0 :(得分:478)

表示已安装要安装的应用程序。只需删除旧版本,然后重试。

答案 1 :(得分:171)

尝试

adb uninstall package-name

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

答案 2 :(得分:92)

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

INSTALL_FAILED_UPDATE_INCOMPATIBLE

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

转到Settings> Apps,您会在应用中找到以下消息:

  

“未为此用户安装”   enter image description here

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

enter image description here

另一种选择:

  • 删除旧应用程序并重新安装。
  • 使用Android Debug Bridge命令:

      

    adb uninstall [PACKAGE NAME]

答案 3 :(得分:21)

两种可行的方法

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

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

adb uninstall your_package_name

答案 4 :(得分:9)

我刚刚重命名了这个包,它对我有用。

或者,如果您正在使用Ionic,您可以删除该应用程序并再试一次,当离子检测到您正在部署的应用程序不是来自同一版本时,会发生这种情况。它经常发生在您从PC更换时。

答案 5 :(得分:8)

  1. 转到:您的adb文件夹\ sdk \ platform-tools \
  2. 输入cmd
  3. 类型:命令窗口上的adb remount
  4. adb shell
  5. rm /system/app/YourApp.apk
  6. 重启设备

答案 6 :(得分:6)

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

答案 7 :(得分:6)

这可能是因为您的设备中有多个用户,并且您刚刚删除了一个应用程序(让其他人仍然存在apk < /强>)。

我已在所有帐户中删除,之后就可以使用了。

答案 8 :(得分:4)

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

答案 9 :(得分:4)

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

我通常使用adb,这就是诀窍 adb uninstall <your-package-name>

答案 10 :(得分:3)

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

在我的问题中,我添加了LOCAL_CERTIFICATE:= platform。因为原始apk没有这个标签。

答案 11 :(得分:2)

在我的情况下,我没有通过设备管理器或Astro找到的应用程序版本。

我最终做的是:

1)从应用程序商店下载最新版本的应用程序

2)在重新启动设备之前,应用程序仍然无法在设备管理器中看到。

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

4)再次运行我的项目

5)一切正常

希望这有助于某人

答案 12 :(得分:2)

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

adb install -r myapk.apk

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

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

答案 13 :(得分:1)

转到设置/应用/ 搜索您的应用并取消...

这对我有用

答案 14 :(得分:1)

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

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

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

答案 15 :(得分:1)

我遇到了同样的问题并且确实遵循了修复它。

  1. 设置&gt;存储&gt;清除缓存数据
  2. 设置&gt;应用&gt;卸载显示在那里的应用程序。我已经卸载了我的应用程序,但它正在那里显示。
  3. 重启,然后一切都很顺利。

答案 16 :(得分:1)

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

答案 17 :(得分:1)

  

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商店版本,因此在向手机安装新版本时会出现不匹配的情况。

希望有帮助。

答案 18 :(得分:0)

如果清单文件包含此行-

  

android:sharedUserId =“ android.uid.system”

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

答案 19 :(得分:0)

工作概况/工作空间

enter image description here

不要忘记,根据您手机上的用户帐户(例如 Google Workspace -G Suite 帐户配置文件,其中设备管理设置为高级)可能会为您的手机生成工作配置文件。

90% 的人拥有它,但他们甚至不知道。您通常会在所有应用程序视图中看到工作资料。几乎就像一个单独的工作区,里面有单独的应用程序。

当您从 Workprofile 浏览应用程序时,如果他们有一些行李锁,您就可以识别出来。 无论如何:

您也必须从工作资料中删除该应用程序!!!

答案 20 :(得分:0)

您只需运行adb uninstall {{package_name}}。而已。现在,您尝试构建。

答案 21 :(得分:0)

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

如果您正在为应用程序准备新的更新,则继续工作不是问题。最后,在发布准备好的版本之前,在对应用程序进行签名时,问题将得到解决,并且用户安装应用程序将没有问题。

答案 22 :(得分:0)

这可能会引发:当应用程序以不同的签名的身份安装在设备中时,则尝试安装的应用程序(apk)。(用简单的话来说,较早的应用程序是由“ System-A”构建的,而现在由“ System-B”并尝试安装) 您可以按照以下所示的一种或多种方式解决此问题。

选项1:

   Uninstall the Application in your Device and install the New APK

选项2:

注意:仅当您有权访问分别用于构建Apk的旧系统和新系统时,此选项才适用

如果您不想删除APk或不允许删除APk,则可以获取Debug密钥,System-A和相同的Debug to System-B

采取“系统-A”调试键形式的步骤

转到终端输入

./gradlew signingReport

您将了解以下结果

Variant: debug Config:
debug Store: /home/user/debug.keystore
Alias: AndroidDebugKey
MD5: CS:7B:E3:51:C5:2E:36:AA:3F:66:BA:ED:40:DB:86:25
SHA1: 2A:BB:C5:4E:64:4E:FE:12:4C:4E:2B:4E:4E:42:4E:4E:4E:4E:63:83
Valid until: Wednesday, May 6, 2048

从上面显示的位置获取“ debug.keystore”文件,并将其传输到“ System-B”,然后转到

    Android studio >> File >> Project Structure >> SigningConfigs
    set the location of the "debug.keystore" to Store File and then ok

现在在您的“ System-B”中构建Apk并运行它

答案 23 :(得分:0)

三星 Galaxy Phones具有称为安全文件夹的功能,可以从中删除应用程序。

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

答案 24 :(得分:0)

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

要查看如何传输所需的debug.keystore,这样您将不会收到消息“该设备已经有一个具有相同应用程序但签名不同的应用程序。要继续,您必须卸载现有的应用。” (并丢失您的数据)。参见Update the app in another machine with same debug.keystore in android

答案 25 :(得分:0)

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

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

答案 26 :(得分:0)

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

答案 27 :(得分:0)

如果你从其他PC上构建你的apk并从不同的PC更新它,就会发生这种情况。

答案 28 :(得分:0)

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

唯一解决方法: - 在android studio中禁用Instant Run - 从android studio安装(它应该只在这里工作) - 卸载应用

现在从Google Play或adb安装它应该是干净的。

答案 29 :(得分:0)

RankoR @您必须已从其他计算机安装该应用程序。在我的情况下问题出现的地方..所有你需要做的只是卸载应用程序并重新安装它或从你正在工作的计算机上运行..这可能是一个迟到的回复,但它会帮助一些..谢谢< / p>

答案 30 :(得分:0)

在我的情况下,我已经从Playstore安装了应用程序,之后我尝试从 Eclipse Android Studio 运行,因此它将尝试再次安装该APK这是不允许的。

首先,您必须卸载 Siged APK ,之后您必须尝试。

谢谢。