Android 模拟器:安装错误:INSTALL_FAILED_VERSION_DOWNGRADE
Posted
技术标签:
【中文标题】Android 模拟器:安装错误:INSTALL_FAILED_VERSION_DOWNGRADE【英文标题】:Android Emulator: Installation error: INSTALL_FAILED_VERSION_DOWNGRADE 【发布时间】:2012-11-28 07:37:43 【问题描述】:我目前正在尝试编译和测试一个小型 android 应用程序。
我正在使用 Eclipse,并安装了 SDK 4.2(Api 级别 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 是空的。我真的不知道,这个错误甚至意味着什么......
【问题讨论】:
【参考方案1】:这意味着您尝试安装的应用与已安装在模拟器上的应用具有相同的 packageName,但您尝试安装的应用具有较低的 versionCode(您的版本号的整数值)。
您可能从一个单独的代码副本安装,其中版本号高于您现在使用的副本。无论哪种情况,都可以:
卸载当前安装的副本
或打开手机的设置 > 应用程序管理器以确定已安装应用程序的版本号,并在 AndroidManifest 中将<manifest android:versionCode
递增到更高。
或https://***.com/a/13772620/632951
【讨论】:
谢谢!正是这样 - 我使用旧 SDK 中的软键盘示例进行了实验,并且似乎已经在模拟器设备中安装了软键盘示例(默认情况下?!)(但在不同的更高版本中)。重命名我的应用程序后,一切都按预期工作...... @Alexander:你能更新这个答案以包含 -d 标志吗? 不需要卸载应用。使用标志:-r -d 这些标志意味着重新安装和降级。 @petrsyn:在 Eclipse 中我应该把这些标志放在哪里? @VioletGiraffe 在命令行中使用:adb install -r -d Application.apk【参考方案2】:您也可以考虑在 adb install 中添加-d
标志。它应该忽略这个错误。
adb install -r -d abc.apk
【讨论】:
未记录但似乎有效。我不得不将它单独写为 -d,将它与 -r 结合起来,因为 -rd 不起作用。 现在记录在案:-d: allow version code downgrade
。还是需要和-r
分开的
来自文档(2020):-d: allow version code downgrade (debuggable packages only)
【参考方案3】:
首先从模拟器中卸载您的应用程序:
adb -e uninstall your.application.package.name
然后尝试再次安装应用程序。
【讨论】:
或者对于连接的物理设备,adb -s DEVICESERIALNUMBER uninstall your.application.package.name
,其中DEVICESERIALNUMBER
可以使用adb devices -l
找到。
如果您只想调试应用程序,这似乎是一个不必要的步骤。【参考方案4】:
这发生在我的项目中,因为我使用 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"
【讨论】:
这对我来说是个问题,我同意它没有正确解析 versionCode,即使增加它(例如:65)也不能避免 INSTALL_FAILED_VERSION_DOWNGRADE【参考方案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]
解决这个问题的方法是uninstall,然后从 IDE 重新安装或重新运行它。
【讨论】:
我不是反对者,但我想这不是发生这种情况的唯一原因。【参考方案6】:INSTALL_FAILED_VERSION_DOWNGRADE
所有 Android 应用都有一个包名。包名唯一标识设备上的应用。如果与设备上已安装的应用相同的packageName,则此错误正在显示。
-
您可以先从您的设备卸载应用程序,然后
然后安装新的。
每次发布新版本时,您只需将数字加一。
【讨论】:
你是对的,版本代码必须在每个版本上增加。但是,不是在发布之前的开发时间。此外,您应该能够在已安装的 apk 之上安装具有相同 versionCode 的 apk(无需卸载)。我的预感是问题是资源引用的版本代码 - 请参阅:***.com/a/14946938/431296【参考方案7】:在棉花糖中,我得到了这个错误,
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.
【讨论】:
【参考方案8】:根据来自 ...\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;
如果新包的版本代码比当前安装的包旧。
【讨论】:
不应该发生在相同的版本代码中【参考方案9】:我遇到了同样的问题。当我尝试在我的 android 设备不是模拟器中运行时出现错误。
sudo ionic run android
我可以通过运行来解决这个问题
adb uninstall com.mypackage.name
【讨论】:
【参考方案10】:你可以试试这个:
adb install -r -d -f your_Apk_path
【讨论】:
【参考方案11】:当我将 Android Studio 应用程序导入 eclipse 时,我发生了这种情况。
我发现从 android studio 项目导入时需要稍微修改 andoridmanifest.xml 文件。我创建了一个新的测试项目,并复制了标题以使其匹配。瞧,问题解决了。
【讨论】:
【参考方案12】:这个错误出现在我的带有多种 gfx 文件的 android 项目中。最后没有接受清单文件的任何更改。
由于我对 Android 设备缺乏了解,我忘记了我的测试设备有第二个用户。此用户还安装了我的应用程序版本,因此我还必须删除此用户帐户的应用程序,它可以工作。
【讨论】:
【参考方案13】:我遇到了同样的问题。我安装了
adb shell pm install --user <userId> test.apk
由于某种原因,屏幕上没有图标。这是一个调试版本,所有其他连续安装都不起作用。只需卸载软件包即可。
adb uninstall com.package.name
【讨论】:
【参考方案14】:一直让我感到沮丧的是,我不知道这个应用程序是为我的访客帐户安装的(尽管我已经为其他帐户卸载了它..)
所以我在应用管理器中搜索了该应用,然后简单地点击了所有用户的卸载
【讨论】:
【参考方案15】:只需卸载以前的 Apk 并安装更新的 APK
【讨论】:
【参考方案16】:这可能是 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.+'
【讨论】:
【参考方案17】:执行以下操作:
-
只需卸载以前版本的应用程序
重新运行命令
享受:)
【讨论】:
【参考方案18】:从设备上卸载您当前的 apk 然后运行
sudo adb uninstall com.package.name
这是通过电脑卸载apk的命令。
然后重试构建
【讨论】:
以上是关于Android 模拟器:安装错误:INSTALL_FAILED_VERSION_DOWNGRADE的主要内容,如果未能解决你的问题,请参考以下文章
Android模拟器:安装错误:INSTALL_FAILED_VERSION_DOWNGRADE
错误记录Android 模拟器安装应用报错 ( INSTALL_FAILED_INSUFFICIENT_STORAGE )
在电脑上装了安卓模拟器,安装软件时打开CMD,输入adb install 加路径。显示找不到***apk
INSTALL_FAILED_INVALID_APK错误,调试版本代码1与0不一致