Android模拟器:安装错误:INSTALL_FAILED_VERSION_DOWNGRADE

时间:2012-12-10 20:23:07

标签: java android sdk

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

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

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

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

我不使用任何GoogleAPI函数,也不使用API​​级别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是空的。我真的不知道,这个错误甚至意味着什么...

15 个答案:

答案 0 :(得分:333)

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

您可能已从代码的单独副本安装,其中版本号高于您当前使用的副本。在任何一种情况下,要么:

  • 卸载当前安装的副本

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

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

答案 1 :(得分:50)

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

答案 2 :(得分:29)

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

adb -e uninstall your.application.package.name

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

答案 3 :(得分:8)

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

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

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

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

android:versionCode="64"

答案 4 :(得分:4)

尝试在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]

对此的解决方案是uninstall,然后从IDE重新安装或重新运行它。

答案 5 :(得分:3)

  

INSTALL_FAILED_VERSION_DOWNGRADE

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

  1. 您可以先从设备中卸载该应用程序 然后安装新的。
  2. 每次发布​​新版本时,您只需将数字增加一个

答案 6 :(得分:3)

在Marshmallow,我收到了这个错误,

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. 

答案 7 :(得分: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;

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

答案 8 :(得分:2)

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

答案 9 :(得分:1)

当我将Android Studio App导入eclipse时,发生了这种情况。

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

答案 10 :(得分:1)

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

因为我对Android设备缺乏了解,所以我忘了我的测试设备有第二个用户。此用户还有我的应用程序的已安装版本,因此我还必须删除此用户帐户的应用程序,它才有效。

答案 11 :(得分:1)

我遇到了同样的问题。当我试图在我的Android设备非模拟器中运行时,我收到了错误。

sudo ionic run android 

我可以通过运行

来解决这个问题
adb uninstall com.mypackage.name

答案 12 :(得分:0)

继续杀死我的事情是,我不知道这个应用程序是为我的访客帐户安装的(虽然我已经为其他帐户卸载了它。)

所以我在应用管理器中搜索了应用,只需点击所有用户的卸载

enter image description here

答案 13 :(得分:0)

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

即可

答案 14 :(得分: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.x.y版本有效,并且不再收到错误消息。此外,我可以等到准备就绪后再升级到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.+'