165

我目前正在尝试编译和测试一个小型 Android 应用程序。

我正在使用 Eclipse,并安装了 SDK 4.2(Api 级别 17)。我已经设置

<uses-sdk android:targetSdkVersion="17" android:minSdkVersion="8" />

虽然我也尝试过不同的值(即 17/17)。

我不使用任何 GoogleAPI 函数,也不使用 API Level 8 中不可用的函数。或者至少在这方面我没有收到任何编译错误或警告。

当我编译项目并在运行 Android 2.2.1 的真实设备上运行它时,应用程序运行良好。但是,当我尝试在具有 Android 4.2、Api Level 17 的模拟器(Android 虚拟设备)上运行应用程序时,出现以下错误:

[2012-12-10 21:10:29 - SoftKeyboard] Installation error: INSTALL_FAILED_VERSION_DOWNGRADE
[2012-12-10 21:10:29 - SoftKeyboard] Please check logcat output for more details.
[2012-12-10 21:10:29 - SoftKeyboard] Launch canceled!

然而,Logcat 是空的。我真的不知道,这个错误甚至意味着什么......

4

18 回答 18

397

这意味着您正在尝试安装与已安装在模拟器上的应用程序具有相同 packageName 的应用程序,但您尝试安装的应用程序具有较低的 versionCode(您的版本号的整数值)。

您可能已经从版本号高于您现在正在使用的副本的代码的单独副本安装。无论哪种情况,都可以:

  • 卸载当前安装的副本

  • 或打开手机的设置 > 应用程序管理器以确定已安装应用程序的版本号,并<manifest android:versionCode 在 AndroidManifest 中将您的版本号递增到更高。

  • https://stackoverflow.com/a/13772620/632951

于 2012-12-10T20:55:43.647 回答
75

您还可以考虑-d在 adb install 中添加标志。它应该忽略这个错误。

adb install -r -d abc.apk
于 2014-02-18T23:49:00.690 回答
32

首先从模拟器中卸载您的应用程序:

adb -e uninstall your.application.package.name

然后尝试再次安装该应用程序。

于 2012-12-10T20:57:01.857 回答
9

这发生在我的项目中,因为我使用 XML 资源来设置版本代码。

AndroidManifest.xml:
android:versionCode="@integer/app_version_code"

app.xml:
<integer name="app_version_code">64</integer>

这在以前的版本中不是问题adb,但是,从platform-toolsr16 开始,这不再被解析为正确的整数。您可以使用清单中的文字强制重新安装adb -r或完全避免该问题:

android:versionCode="64"
于 2013-02-18T23:05:34.840 回答
5

当尝试在来自 Play 商店的已签名发布 APK 之上安装调试/未签名 APK 时,可能会发生这种情况。

H:\>adb install -r "Signed.apk"
2909 KB/s (220439 bytes in 0.074s)
        pkg: /data/local/tmp/Signed.apk
Success

H:\>adb install -r "AppName.apk"
2753 KB/s (219954 bytes in 0.078s)
        pkg: /data/local/tmp/AppName.apk
Failure [INSTALL_FAILED_VERSION_DOWNGRADE]

解决方案是卸载然后重新安装或从 IDE 重新运行它。

于 2014-01-14T15:38:01.147 回答
3

INSTALL_FAILED_VERSION_DOWNGRADE

所有 Android 应用程序都有一个包名称。包名唯一标识设备上的应用程序。如果与设备上已安装的应用程序相同的包名称,则显示此错误

  1. 您可以先从您的设备上卸载该应用程序,然后再安装新的。
  2. 每次发布新版本时,您只需将数字加一即可
于 2016-02-17T07:41:20.927 回答
3

在棉花糖中,我得到了这个错误,

Installation error: INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE
Please check logcat output for more details.
Launch canceled!

寻找解决方案我搜索并来到这里。我删除了该应用程序,但在 Nexus 6 中仍然存在此问题。后来发现,

Settings > Apps > [My app name] have to removed for all user. 
于 2016-03-04T14:18:11.903 回答
2

根据来自 ...\android-22\android\content\pm\PackageManager.java 的 sdk src 代码

/**
 * Installation return code: this is passed to the {@link IPackageInstallObserver} by
 * {@link #installPackage(android.net.Uri, IPackageInstallObserver, int)} if
 * the new package has an older version code than the currently installed package.
 * @hide
 */
public static final int INSTALL_FAILED_VERSION_DOWNGRADE = -25;

如果新软件包的版本代码比当前安装的软件包旧。

于 2015-04-15T14:32:12.830 回答
2

你可以试试这个: adb install -r -d -f your_Apk_path

于 2016-12-13T08:03:48.283 回答
2

我遇到了同样的问题。当我尝试在我的 android 设备而不是模拟器中运行时出现错误。

sudo ionic run android 

我可以通过运行来解决这个问题

adb uninstall com.mypackage.name
于 2016-09-19T18:16:56.353 回答
1

此错误出现在我的具有多种 gfx 文件的 android 项目中。最后,没有接受清单文件的任何更改。

因为我对安卓设备缺乏了解,我忘记了我的测试设备有第二个用户。该用户还安装了我的应用程序版本,因此我还必须删除该用户帐户的应用程序并且它可以工作。

于 2015-03-18T16:00:00.397 回答
1

当我将 Android Studio 应用程序导入 eclipse 时,这发生在我身上。

我发现从 android studio 项目导入时需要稍微修改 andoridmanifest.xml 文件。我创建了一个新的测试项目,并复制了标题以使其匹配。瞧,问题解决了。

于 2014-09-28T19:48:15.840 回答
1

我遇到了同样的问题。我安装了

    adb shell pm install --user <userId> test.apk

由于某种原因,屏幕上没有图标。这是一个调试版本,所有其他连续安装都不起作用。只需卸载软件包即可。

     adb uninstall com.package.name
于 2020-12-24T04:43:06.527 回答
0

只需卸载以前的 Apk 并安装更新的 APK

于 2017-12-21T06:58:24.113 回答
0

从设备上卸载您当前的 apk 然后运行

sudo adb uninstall com.package.name

这是通过pc卸载apk的命令。

然后重试构建

于 2021-12-14T10:58:18.743 回答
0

请执行下列操作:

  1. 只需卸载以前版本的应用程序
  2. 重新运行命令
  3. 享受 :)
于 2021-10-04T10:58:45.333 回答
0

一直让我感到沮丧的是,我不知道这个应用程序是为我的访客帐户安装的(尽管我已经为其他帐户卸载了它..)

所以我在应用程序管理器中搜索了该应用程序,然后简单地点击了所有用户的卸载

在此处输入图像描述

于 2017-10-13T13:19:17.330 回答
0

这可能是 Google Play 服务依赖项的问题,而不是实际的应用程序版本问题。

有时,情况并非如此:

a) 安装了现有版本的应用程序,无论是否更新 b) 设备上的另一个用户帐户上安装了现有版本的应用程序

所以错误信息只是假的。

就我而言,我有:

implementation 'com.google.android.gms:play-services-maps:16.0.0'
implementation 'com.google.android.gms:play-services-location:16.0.0'
implementation 'com.google.android.gms:play-services-gcm:16.0.0'

但是当我尝试

implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.android.gms:play-services-location:17.0.0'
implementation 'com.google.android.gms:play-services-gcm:17.0.0'

我遇到了与 androidX 相关的错误,因为我还没有升级到 androidX 并且还没有准备好这样做。我发现使用最新的 16.xy 版本可以工作,并且我不再收到错误消息。此外,我可以等到我准备好之后再升级到 androidX。

implementation 'com.google.android.gms:play-services-maps:16.+'
implementation 'com.google.android.gms:play-services-location:16.+'
implementation 'com.google.android.gms:play-services-gcm:16.+'
于 2020-04-10T05:52:29.217 回答