Android模拟器:安装错误:INSTALL_FAILED_VERSION_DOWNGRADE

ndb*_*dbd 136 java sdk android

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

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

<uses-sdk android:targetSdkVersion="17" android:minSdkVersion="8" />
Run Code Online (Sandbox Code Playgroud)

虽然我也尝试过不同的值(即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!
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*cas 342

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

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

  • 卸载当前安装的副本

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

  • 或者/sf/answers/964083431/

  • 卸载应用程序不需要它.使用标志:-r -d这些标志意味着重新安装和降级. (8认同)
  • @亚历山大:您可以更新此答案以包含-d标志吗? (2认同)
  • @VioletGiraffe它在命令行中使用:adb install -r -d Application.apk (2认同)

gru*_*czy 54

您还可以考虑向-dadb install 添加标记.它应该忽略这个错误.

  • 无证,但似乎工作.我必须单独写它作为-d,将它与-r结合起来,因为-rd不起作用. (7认同)
  • 谢谢 !它的工作原理:adb install -r -d abc.apk (3认同)
  • 它现在已经记录:`-d:允许版本代码降级`.仍需要与`-r`分开 (2认同)

小智 29

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

adb -e uninstall your.application.package.name
Run Code Online (Sandbox Code Playgroud)

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

  • 或者对于连接的物理设备,`adb -s DEVICESERIALNUMBER卸载your.application.package.name`,其中`DEVICESERIALNUMBER`可以使用`adb devices -l`找到. (8认同)

Jam*_*ald 8

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

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

app.xml:
<integer name="app_version_code">64</integer>
Run Code Online (Sandbox Code Playgroud)

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

android:versionCode="64"
Run Code Online (Sandbox Code Playgroud)


Ars*_*lan 6

请执行下列操作:

  1. 只需卸载以前版本的应用程序即可
  2. 重新运行命令
  3. 享受 :)


Nar*_*tha 6

从设备中卸载当前的 apk,然后运行

sudo adb uninstall com.package.name
Run Code Online (Sandbox Code Playgroud)

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

然后重试构建


Dea*_*nna 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]
Run Code Online (Sandbox Code Playgroud)

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