Emulatore Android: errore di installazione: INSTALL_FAILED_VERSION_DOWNGRADE


142

Attualmente sto cercando di compilare e testare una piccola applicazione Android.

Sto usando Eclipse e ho installato SDK 4.2 (Api Level 17). Ho impostato

<uses-sdk android:targetSdkVersion="17" android:minSdkVersion="8" />

anche se ho provato anche valori diversi (cioè 17/17).

Non utilizzo alcuna funzione di Google API, né utilizzo funzioni che non sono disponibili nel Livello API 8. O almeno non ricevo errori di compilazione o avvisi a tale riguardo.

Quando compilo il progetto e lo eseguo su un dispositivo reale con Android 2.2.1, l'applicazione funziona correttamente. Tuttavia, quando provo a eseguire l'applicazione su un emulatore (dispositivo virtuale Android) con Android 4.2, Api Level 17, visualizzo il seguente errore:

[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 tuttavia è vuoto. Non ho davvero idea di cosa significhi questo errore ...

Risposte:


353

Significa che stai provando a installare un'app con lo stesso nome pacchetto di un'app già installata sull'emulatore, ma quella che stai tentando di installare ha un versionCode inferiore (valore intero per il tuo numero di versione).

Potresti aver installato da una copia separata del codice in cui il numero di versione era superiore alla copia con cui stai lavorando in questo momento. In entrambi i casi:

  • disinstallare la copia attualmente installata

  • oppure apri le Impostazioni del telefono> Gestione applicazioni per determinare il numero di versione dell'app installata e incrementa il <manifest android:versionCode numero su AndroidManifest.

  • o https://stackoverflow.com/a/13772620/632951


1
Grazie! Era esattamente questo: ho sperimentato l'esempio di Softkeyboard da un vecchio SDK e sembra che un esempio di Softkeyboard sia già installato (per impostazione predefinita ?!) nei dispositivi di emulazione (ma in una versione successiva e successiva). Dopo aver rinominato la mia applicazione, tutto ha funzionato come previsto ...
ndbd il

2
@Alexander: puoi aggiornare questa risposta per includere il flag -d?
David Alves,

8
Non è necessario per disinstallare l'app. Usa flag: -r -d Questi flag significano reinstallazione e downgrade.
petrsyn,

1
@petrsyn: dove inserisco queste bandiere in Eclipse?
Violet Giraffe,

2
@VioletGiraffe è usato nella riga di comando: adb install -r -d Application.apk
petrsyn

61

Puoi anche considerare di aggiungere -dflag all'installazione di adb. Dovrebbe ignorare questo errore.

adb install -r -d abc.apk

8
Non documentato ma sembra funzionare. Ho dovuto scriverlo separatamente come -d, combinandolo con -r come -rd non ha funzionato.
mhsmith

3
E 'documentato ora: -d: allow version code downgrade. Devo ancora -r
separarmi

1
Dai documenti (2020): -d: allow version code downgrade (debuggable packages only)
Alex.K.

30

Disinstalla innanzitutto l'applicazione dall'emulatore:

adb -e uninstall your.application.package.name

Quindi provare a installare nuovamente l'applicazione.


8
O per un dispositivo fisico collegato adb -s DEVICESERIALNUMBER uninstall your.application.package.name, dove DEVICESERIALNUMBERpuò essere trovato utilizzando adb devices -l.
Joel Purra,

Sembra un passaggio non necessario se si desidera semplicemente eseguire il debug di un'applicazione.
IgorGanapolsky

8

Questo stava accadendo nel mio progetto perché stavo usando una risorsa XML per impostare il codice della versione.

AndroidManifest.xml:
android:versionCode="@integer/app_version_code"

app.xml:
<integer name="app_version_code">64</integer>

Questo non era un problema nelle versioni precedenti di adb, a partire da platform-toolsr16 questo non viene più risolto con il numero intero corretto. Puoi forzare la reinstallazione usando adb -ro evitare del tutto il problema usando un valore letterale nel manifest:

android:versionCode="64"

Questo è stato il problema per me, e sono d'accordo che non risolve correttamente il VersionCode, anche aumentandolo (es: 65) non si evita INSTALL_FAILED_VERSION_DOWNGRADE
Stan Kurdziel

5

Questo può accadere quando si tenta di installare un APK di debug / non firmato su un APK con versione firmata dal Play Store.

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]

La soluzione a questo è disinstallare e quindi reinstallare o eseguirlo nuovamente dall'IDE.


Non sono il downvoter, ma immagino che questa non sia l'unica ragione per cui ciò può accadere.
Viccari,

3

INSTALL_FAILED_VERSION_DOWNGRADE

Tutte le app Android hanno un nome pacchetto. Il nome del pacchetto identifica in modo univoco l'app sul dispositivo. Se lo stesso packageName dell'app è già installata sul dispositivo, verrà visualizzato questo errore .

  1. Puoi prima disinstallare l'applicazione dal tuo dispositivo e quindi installare quella nuova.
  2. Potresti semplicemente aumentare il numero di uno ogni volta che viene rilasciata una nuova versione .

1
Hai ragione, il versionCode deve essere aumentato su ogni versione. Tuttavia, non in fase di sviluppo prima di una versione. Inoltre, dovresti essere in grado di installare un apk con lo stesso versionCode sopra un apk già installato (senza disinstallarlo). La mia impressione è il problema è stato la risorsa di riferimento versionCode - vedi: stackoverflow.com/a/14946938/431296
Stan Kurdziel

3

In Marshmallow, ho avuto questo errore,

Installation error: INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE
Please check logcat output for more details.
Launch canceled!

Alla ricerca di una soluzione ho cercato e sono venuto qui. Ho eliminato l'app ma ho ancora questo problema in Nexus 6. In seguito ho scoperto che in

Settings > Apps > [My app name] have to removed for all user. 

2

Secondo il codice sdk src di ... \ 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;

se il nuovo pacchetto ha un codice versione precedente rispetto al pacchetto attualmente installato.


non dovrebbe accadere con la stessa versioneCode però
Stan Kurdziel

2

Avevo lo stesso problema. Stavo ricevendo un errore quando ho provato a correre nel mio dispositivo Android non nell'emulatore .

sudo ionic run android 

Sono in grado di risolvere questo problema eseguendo

adb uninstall com.mypackage.name

2

puoi provare questo: adb install -r -d -f your_Apk_path


1

questo è successo a me quando ho importato un'app Android Studio in eclipse.

Ho capito che il file andoridmanifest.xml deve essere leggermente modificato durante l'importazione dal progetto Android Studio. Ho creato un nuovo progetto di prova e copiato le intestazioni per farlo corrispondere. voilà, problema risolto.


1

Questo errore appare nel mio progetto Android con più tipi di file gfx. Alla fine non è stato accettato alcun cambiamento nel file manifest.

Perché la mia mancanza di conoscenza dei dispositivi Android, ho dimenticato che il mio dispositivo di prova ha un secondo utente. Questo utente ha anche una versione installata della mia app, quindi devo anche eliminare l'app per questo account utente e funziona.


0

la cosa che continuava a uccidermi era che non sapevo che questa app fosse installata per il mio account ospite (anche se l'avevo disinstallata per gli altri account ..)

così ho cercato l'app in Gestione app e ho semplicemente fatto clic su Disinstalla per tutti gli utenti

inserisci qui la descrizione dell'immagine


0

Basta disinstallare l'apk precedente e installare l'APK aggiornato


0

Potrebbe trattarsi di un problema con le dipendenze di Google Play Services piuttosto che di un vero problema di versione dell'app.

A volte, NON è il caso che:

a) esiste una versione dell'app installata, più recente o meno b) esiste una versione dell'app installata su un altro account utente sul dispositivo

Quindi il messaggio di errore è solo falso.

Nel mio caso, avevo:

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'

Ma quando ci ho provato

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'

Ho riscontrato errori relativi a androidX, poiché non avevo ancora effettuato l'aggiornamento a androidX e non ero pronto a farlo. Ho scoperto che utilizzando le ultime versioni 16.xy funziona e non ricevo più il messaggio di errore. Inoltre, potrei aspettare fino a quando, quando sarò pronto, per passare ad 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.+'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.