2012-12-10 236 views
112

我目前正在尝试编译和测试一个小的Android应用程序。Android模拟器:安装错误:INSTALL_FAILED_VERSION_DOWNGRADE

我正在使用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级别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的但是是空的。我也实在没有头绪,这是什么错误,甚至意味着...

回答

290

这意味着你要安装具有相同的packageName为已经安装在仿真器上应用程序的应用程序,但是你想在一个安装版本号较低(版本号的整数值)。

你可能已经从那里的版本号是比你用现在的工作拷贝更高的代码的单独副本安装。在这两种情况下,无论是:

  • 卸载当前已安装的副本

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

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

+1

谢谢!正是这样 - 我用旧版SDK中的Softkeyboard实例进行了验证,并且仿真器设备中已经安装了软键盘示例(默认情况下为?!)(但是在不同的更新版本中)。重命名我的应用程序后,一切工作如预期... – ndbd

+0

谢谢...我正在与API演示和此应用程序始终安装在模拟器.. – Khushboo

+1

@亚历山大:你能更新这个答案,包括-D标志? –

27

先卸载从仿真器中的应用:

adb -e uninstall your.application.package.name 

然后尝试重新安装应用程序。

+8

或者对于连接的物理设备,'adb -s DEVICESERIALNUMBER uninstall your.application.package.name',其中'DEVICESERIALNUMBER'可以使用'adb devices -l'找到。 –

+0

如果您只是想调试应用程序,看起来像不必要的一步。 –

7

这是发生在我的项目中,因为我正在使用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" 
+0

这是我的问题,我同意它不正确地解析versionCode,甚至增加它(例如:65)不避免INSTALL_FAILED_VERSION_DOWNGRADE –

4

这可能发生试图从一个签署发布APK的顶部安装调试/ APK未签名时Play商店。

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运行它。

+0

我不是downvoter,但我想这不是唯一的原因为什么会发生。 – Viccari

45

您也可以考虑将-d标志添加到adb安装中。它应该忽略这个错误。

+6

无证件,但似乎工作。我不得不把它作为-d单独编写,将它与-r作为-rd不起作用。 – mhsmith

+3

谢谢!它的工作:adb install -r -d abc.apk –

+2

现在记录它:'-d:允许版本代码降级。仍然需要从'-r' – wisbucky

1

当我将一个Android Studio应用程序导入到eclipse中时,发生了这种情况。

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

1

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

因为我对android设备的知识缺乏,我忘了我的测试设备有第二个用户。此用户也有我的应用程序的安装版本,所以我也必须删除该用户帐户的应用程序,它的工作原理。

2

据... \ Android的22 \机器人\内容\ PM \ PackageManager.java

/** 
* 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; 

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

+0

中分离出来,但不应该发生在使用相同的versionCode –

1

INSTALL_FAILED_VERSION_DOWNGRADE

所有Android应用程序都有一个包名称。软件包名称唯一标识设备上的应用程序。如果相同packageName作为应用程序已经安装在设备上,然后这错误显示。

  1. 您可以卸载从您的设备第一和 然后再安装一个新的应用程序。
  2. 每次发布新版本时,您都可以简单地将数字增加一个
+1

您正确的版本Code必须在每个版本上增加。但是,不在发布之前的开发时间。此外,您应该能够在已安装的apk之上安装具有相同versionCode的apk(无需卸载)。我的预感是问题是资源引用versionCode - 请参阅:https://stackoverflow.com/a/14946938/431296 –

2

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

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. 
1

我有同样的问题。当我尝试在我的android设备而不是仿真器中运行时,我出现错误。

sudo ionic run android 

我能够通过运行

adb uninstall com.mypackage.name 
0

来解决这个问题,你可以试试这个: adb install -r -d -f your_Apk_path

0

是不停地杀我的是事情,我不知道这个程序为我的访客帐户安装(尽管我已经为其他帐户卸载了它..)

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

enter image description here

0

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