有没有办法在安装 Android 调试桥的应用程序时忽略 INSTALL_FAILED_VERION_DOWNGRADE?

似乎最近的 Android 4.2在安装时引入了这个错误条件,即尝试用较低版本安装 APK。在以前的 Android 版本中,人们只需通过 adb install -r <link to APK>安装旧版本的 APK 即可。出于调试的目的,我经常需要重新测试旧版本的 APK,而且 -r标志将替换旧版本 Android 中的旧版本。有没有办法忽略 [INSTALL_FAILED_VERSION_DOWNGRADE]

114061 次浏览

您是否在设备上启用了多帐户(并通过 ADB 推送您的 apk) ? 如果是这样,你必须删除每个帐户的 apk。完成卸载后,您的推将是确定的。

您可以尝试使用 adb uninstall -k <package>,然后安装旧的 apk。 来自 adb 使用指南:

  adb uninstall [-k] <package> - remove this app package from the device
('-k' means keep the data and cache directories)

我自己也用我的 apk 试过,它似乎对大多数数据都有效(有些数据,比如 RawContacts 没有保存)

看起来最新版本的 adb 工具有一个“允许降级标志”,这个标志在 adb 帮助中没有显示,但是在设备的“ pm”帮助中显示了。所以使用: adb install -r -d <link to apk>

在我的案例中,它是一个包含在我的项目中的过时的 Google Play 服务版本。我正在使用 Android Studio。我在 SDK 上运行了一个更新,并导入了更新后的库,这个错误就消失了。因此,我的建议是: 更新项目引用的最新库。

您可能是从单独的代码副本中安装的,其中的版本号高于您现在正在使用的副本。在这两种情况下,卸载当前安装的副本,或打开设置 > 应用程序,以确定安装的应用程序的版本号,并增加您的版本代码,以更高的 AndroidManifest。

我也面临着同样的问题。它可以通过以下步骤解决,这比从设备中删除任何 apk 更容易

1)在终端上运行命令“ adb logcat | grep-i version”

2)查找特定的行,它将显示在 logcat-的末尾

"Downgrade detected: Update version code 5011  is older than current 9109"

3)复制当前版本(例如9109)并将其粘贴到 AndroidManifest.xml 中,如下所示-

android:versionCode="9109"

现在清理并重新构建应用程序,它应该可以正常工作。

尝试使用-卸载以前安装的应用程序版本

adb uninstall com.package.name

然后再次安装/运行应用程序

对于那些面临小米问题的人来说:

adb shell pm uninstall <package_name>

这可能是 Google Play Services 依赖项的问题。

有时,情况并非如此:

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.+'

就我而言:

第一步: 跑

yarn start --reset-cache

第二步: 跑

yarn android

卸载已安装的应用程序。

检查是否更改了项目包名称, 由于包的名称,它与现有的应用程序冲突。

对我来说,只有这样才行得通:

adb install -t -r -d myapp.apk

顺便说一下,我想替换的应用程序,降级是一个系统应用程序

请参阅文档: https://developer.android.com/studio/command-line/adb

-d: Allow version code downgrade.

简单地做 adb install -d your-app.apk应该会有帮助。