我目前正在尝试编译和测试一个小型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是空的。我真的不知道,这个错误甚至意味着什么...
答案 0 :(得分:333)
这意味着您尝试使用与已安装在模拟器上的应用程序相同的packageName安装应用程序,但您尝试安装的应用程序具有较低的versionCode(版本号的整数值)。 / p>
您可能已从代码的单独副本安装,其中版本号高于您当前使用的副本。在任何一种情况下,要么:
卸载当前安装的副本
或打开手机的设置&gt;应用程序管理器确定已安装应用程序的版本号,并在AndroidManifest中将<manifest android:versionCode
增加到更高。
答案 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 与设备上已经已安装的应用相同,那么此错误正在显示。
答案 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项目导入时,需要稍微修改一下andoridmanifest.xml文件。我创建了一个新的测试项目,并复制了标题以使其匹配。瞧,问题解决了。
答案 10 :(得分:1)
这个错误出现在我的android项目中,有多种gfx文件。最后,没有接受清单文件的更改。
因为我对Android设备缺乏了解,所以我忘了我的测试设备有第二个用户。此用户还有我的应用程序的已安装版本,因此我还必须删除此用户帐户的应用程序,它才有效。
答案 11 :(得分:1)
我遇到了同样的问题。当我试图在我的Android设备非模拟器中运行时,我收到了错误。
sudo ionic run android
我可以通过运行
来解决这个问题adb uninstall com.mypackage.name
答案 12 :(得分:0)
答案 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.+'