Gibt es eine Möglichkeit, INSTALL_FAILED_VERSION_DOWNGRADE bei der Anwendungsinstallation mit der Android Debug Bridge zu ignorieren?

121

Es scheint, dass das neueste Android 4.2 diese Fehlerbedingung bei der Installation eingeführt hat, wenn versucht wird, ein APK mit einer niedrigeren Version zu installieren. In früheren Versionen von Android wäre es möglich, ältere APKs einfach über zu installieren adb install -r <link to APK>. Zum Debuggen muss ich ältere APKs häufig erneut testen. und die -rFlagge würde den älteren Build in älteren Android-Versionen ersetzen. Gibt es hier eine Problemumgehung, die ignoriert werden muss [INSTALL_FAILED_VERSION_DOWNGRADE]?

AaronMT
quelle
Du meinst, neben der Deinstallation der neueren Version?
CommonsWare
Richtig; Ich nahm an, dass die -rFlagge damit umgehen würde.
AaronMT
5
Diese Frage gilt auch für Fälle, in denen Sie (etwas falsch) falsch nummerierte Builds haben. Zum Beispiel hat Ihre Version 1.0 von einer Entwicklungsbox möglicherweise einen höheren Versionscode als Version 2.0 von einem Build-Server.
Parkerfath

Antworten:

288

Es scheint, dass die neueste Version der ADB-Tools ein "Downgrade-Flag zulassen" hat, das nicht in der ADB-Hilfe angezeigt wird, sondern in der "PM" -Hilfe auf dem Gerät. Verwenden Sie also: adb install -r -d <link to apk>

Vorgesetzter
quelle
3
Versucht mit adb install -rd <apkfile>dem hat nicht funktioniert. Ihr Versino (mit getrennten Optionen) funktioniert einwandfrei. Vielen Dank!
MarSoft
1
Und es scheint jetzt dokumentiert zu sein! Nur nicht, dass Sie -r -d verwenden müssen, -rd wird nicht funktionieren
plaisthos
Zum Deinstallieren (Downgrade) von Waze 4.0.0.2 und Installieren von Version 3.9.5.3: adb install -r -d Waze_3.9.5.3.apk . Auf diese Weise verlieren Sie keine App-Daten.
Derek Gogol
12
Seit Android 7 (Nougat) funktioniert adb install -d nur noch, wenn das Paket als debuggbar markiert ist. android.googlesource.com/platform/frameworks/base/+/921dd75
Darpan
20

Sie können versuchen adb uninstall -k <package>, die ältere apk zu verwenden und dann zu installieren. Aus der ADB-Bedienungsanleitung:

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

Ich habe es selbst mit meiner apk versucht und es scheint für die meisten Daten zu funktionieren (einige Daten wie RawContacts wurden nicht gespeichert)

Talihawk
quelle
Es scheint, dass dieser Befehl die Deinstallation nicht tatsächlich ausführt, sondern lediglich eine Warnung ausgibt. Der Befehl, dies tatsächlich auszuführen, scheint zu sein adb shell pm uninstall -k <package>.
Paul Lammertsma
Dies ist auch nützlich für ein Downgrade, wenn sich adb -d immer noch wie bei mir beschwert.
Zeiger Null
14

Haben Sie auf Ihrem Gerät mehrere Konten aktiviert (und Ihre apk über ADB gepusht)? Wenn ja, müssen Sie die apk in jedem Konto entfernen. Nach vollständiger Deinstallation ist Ihr Push in Ordnung.

OlivierTurpin
quelle
Das Wiederherstellen des Backups über Titanium Backup hat nicht funktioniert. Neuinstallation hat nicht funktioniert. Die Installation über APK und / oder ADB-Installation hat nicht funktioniert. Das hat mich 1,5 Stunden gekostet und dein einfacher Tipp hat es geschafft. Vielen Dank!
Bentolor
3

In meinem Fall war es eine veraltete Version von Google Play Services, die in meinem Projekt enthalten war. Ich benutze Android Studio. Ich habe ein Update für das SDK ausgeführt und die aktualisierte Bibliothek importiert, und dieser Fehler ist verschwunden. Also mein Vorschlag: Update auf die neuesten Bibliotheken, auf die Ihr Projekt verweist.

IgorGanapolsky
quelle
1

Versuchen Sie, die zuvor installierte App-Version zu deinstallieren.

adb uninstall com.package.name

und installieren / führen Sie dann Ihre App erneut aus

Krishna
quelle
0

Möglicherweise haben Sie eine separate Kopie des Codes installiert, bei der die Versionsnummer höher war als die Kopie, mit der Sie gerade arbeiten. Deinstallieren Sie in beiden Fällen die aktuell installierte Kopie oder öffnen Sie Einstellungen> Apps, um die Versionsnummer für die installierte App zu ermitteln, und erhöhen Sie Ihren Versionscode im AndroidManifest auf einen höheren Wert.

Ravindra
quelle
1
Warum wurde das abgelehnt? Es ist vielleicht nicht die beste Antwort, aber es scheint eine praktikable (und vielleicht einfachste) Lösung für jemanden zu sein, der neu in diesem Bereich ist! Bitte hinterlassen Sie Kommentare nach Antworten wie diese, da sie wesentlich nicht nur für den Beantworter, aber für die Leser , die später diese Frage besuchen. : - |
jedd.ahyoung
Dies kann natürlich getan werden. Es ist schon offensichtlich. Die Frage ist, ob es eine Möglichkeit gibt, diese Prüfung zu überspringen und ein Downgrade zuzulassen. Und die Antwort lautet ja. Diese Antwort sagt im Grunde nein.
Tasomaniac
0

Ich hatte auch das gleiche Problem. Es kann mit den folgenden Schritten gelöst werden, die einfacher sind als das Löschen von apk vom Gerät -

1) Führen Sie den Befehl "adb logcat | grep -i version" auf dem Terminal aus

2) Suchen Sie nach der bestimmten Zeile, die am Ende des Logcats angezeigt wird -

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

3) Kopieren Sie die aktuelle Version (z. B. 9109) und fügen Sie sie wie unten gezeigt in AndroidManifest.xml ein.

android:versionCode="9109"

Bereinigen Sie jetzt die Anwendung und erstellen Sie sie neu. Sie sollte einwandfrei funktionieren.

Sunita
quelle
0

Möglicherweise liegt ein Problem mit den Abhängigkeiten von Google Play Services vor.

Manchmal ist es NICHT der Fall, dass:

a) Es ist eine vorhandene Version der App installiert, neu oder nicht

b) Auf dem Gerät ist eine vorhandene Version der App auf einem anderen Benutzerkonto installiert

Die Fehlermeldung ist also nur eine Fälschung.

In meinem Fall hatte ich:

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'

Aber als ich es versuchte

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'

Ich habe androidX-bezogene Fehler erhalten, da ich noch kein Upgrade auf androidX durchgeführt hatte und nicht dazu bereit war. Ich habe festgestellt, dass die Verwendung der neuesten 16.xy-Versionen funktioniert und ich erhalte keine Fehlermeldung mehr. Außerdem könnte ich bis später warten, wenn ich bereit bin, auf AndroidX zu aktualisieren.

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.+'
verheißungsvoll99
quelle
-3

Für Menschen, die Probleme mit Xiaomi haben:

adb shell pm uninstall <package_name>
Vaigunth
quelle
Dies hilft bei nichts und sollte erklärt werden, warum dies so gemacht werden muss.
Benyamin Limanto