Ich versuche gerade, eine kleine Android-Anwendung zu kompilieren und zu testen.
Ich verwende Eclipse und habe SDK 4.2 (API Level 17) installiert. Ich habe eingestellt
<uses-sdk Android:targetSdkVersion="17" Android:minSdkVersion="8" />
ich habe zwar auch andere Werte ausprobiert (also 17/17).
Ich verwende keine GoogleAPI-Funktionen und auch keine Funktionen, die in API-Ebene 8 nicht verfügbar sind. Außerdem bekomme ich zumindest keine Kompilierfehler oder Warnungen in dieser Hinsicht.
Wenn ich das Projekt kompiliere und auf einem echten Gerät mit Android 2.2.1 ausführen, läuft die Anwendung einwandfrei. Wenn ich jedoch versuche, die Anwendung auf einem Emulator (Android Virtual Device) mit Android 4.2, Api Level 17, auszuführen, erhalte ich die folgende Fehlermeldung:
[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 ist jedoch leer. Ich habe wirklich keine Ahnung, was dieser Fehler überhaupt bedeutet ...
Dies bedeutet, dass Sie versuchen, eine App mit demselben Paketnamen wie eine bereits auf dem Emulator installierte App zu installieren. Die zu installierende App hat jedoch einen niedrigeren Versionscode (ganzzahliger Wert für Ihre Versionsnummer).
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. In beiden Fällen entweder
deinstallieren Sie die aktuell installierte Kopie
oder öffnen Sie die Einstellungen> Anwendungsmanager Ihres Telefons, um die Versionsnummer für die installierte App zu ermitteln, und erhöhen Sie Ihren <manifest Android:versionCode
im AndroidManifest um einen höheren Wert.
Sie können auch -d
-Flag zur Adb-Installation hinzufügen. Es sollte diesen Fehler ignorieren.
Deinstallieren Sie zuerst Ihre Anwendung vom Emulator:
adb -e uninstall your.application.package.name
Versuchen Sie dann erneut, die Anwendung zu installieren.
Dies geschah in meinem Projekt, weil ich zum Festlegen des Versionscodes eine XML-Ressource verwendet habe.
AndroidManifest.xml:
Android:versionCode="@integer/app_version_code"
app.xml:
<integer name="app_version_code">64</integer>
In früheren Versionen von adb
war dies kein Problem. Ab platform-tools
r16 wird dies jedoch nicht mehr in die richtige Ganzzahl aufgelöst. Sie können entweder die erneute Installation mithilfe von adb -r
erzwingen oder das Problem vollständig vermeiden, indem Sie im Manifest ein Literal verwenden:
Android:versionCode="64"
Dies kann vorkommen, wenn Sie versuchen, eine APK mit Debug- oder nicht signiertem Zugriff über eine signierte Release-APK aus dem Play Store zu installieren.
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]
Die Lösung hierfür ist, dass Sie uninstall und dann von der IDE aus neu installieren oder erneut ausführen.
In Marshmallow bekam ich diesen Fehler,
Installation error: INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE
Please check logcat output for more details.
Launch canceled!
Auf der Suche nach einer Lösung habe ich gesucht und bin hierher gekommen. Ich habe die App gelöscht, habe dieses Problem jedoch noch in Nexus 6. Später fand ich heraus, dass
Settings > Apps > [My app name] have to removed for all user.
sie können dies versuchen: adb install -r -d -f your_Apk_path
Gemäß sdk src code von ...\Android-22\Android\content\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;
wenn das neue Paket einen älteren Versionscode hat als das aktuell installierte Paket.
INSTALL_FAILED_VERSION_DOWNGRADE
Alle Android-Apps haben einen Paketnamen. Der Paketname identifiziert die App auf dem Gerät eindeutig. Wenn das gleiche packageName als App bereits auf dem Gerät installiert ist , dann wird dieses error angezeigt.
Dieser Fehler wird in meinem Android-Projekt mit mehreren Arten von gfx-Dateien angezeigt. Am Ende wurde keine Änderung in der Manifestdatei akzeptiert.
Aufgrund meines Mangels an Kenntnissen über Android-Geräte vergesse ich, dass mein Testgerät einen zweiten Benutzer hat. Dieser Benutzer hat auch eine installierte Version meiner App, so dass ich auch die App für dieses Benutzerkonto löschen muss und es funktioniert.
Ich hatte das gleiche Problem. Ich habe eine Fehlermeldung erhalten, als ich versuchte, auf meinem Android-Gerät nicht im Emulator zu laufen.
Sudo ionic run Android
Ich kann dies durch Laufen beheben
adb uninstall com.mypackage.name
dies ist mir passiert, als ich eine Android Studio App in Eclipse importierte.
Ich habe herausgefunden, dass die Datei andoridmanifest.xml beim Importieren aus einem Android Studio-Projekt geringfügig geändert werden muss. Ich habe ein neues Testprojekt erstellt und die Überschriften kopiert, damit es übereinstimmt. voila, Problem gelöst.
Deinstalliere einfach den vorherigen Apk und installiere den aktualisierten APK