2012-12-10 33 views
112

Attualmente sto cercando di compilare e testare una piccola applicazione Android.: Errore di installazione: INSTALL_FAILED_VERSION_DOWNGRADE

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 differenti (cioè 17/17).

Non utilizzo alcuna funzione GoogleAPI, né utilizzo funzioni non disponibili in API Livello 8. O almeno non ricevo errori di compilazione o avvisi in merito.

Quando compilo il progetto ed eseguo su un dispositivo reale con Android 2.2.1, l'applicazione funziona correttamente. Tuttavia quando provo a eseguire l'applicazione su un emulatore (Android Virtual Device) con Android 4.2, Api livello 17 ottengo 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 però è vuoto. Non ho idea di cosa significhi questo errore ...

risposta

290

Significa che stai tentando di installare un'app con lo stesso packageName di un'app già installata nell'emulatore, ma quella che stai cercando di install ha un versionCode inferiore (valore intero per il numero di versione).

È possibile che sia stato installato da una copia separata del codice in cui il numero di versione era superiore alla copia con cui si sta lavorando in questo momento. In entrambi i casi, sia:

  • disinstallare la copia correntemente installata

  • o aprono Impostazioni del telefono> Application Manager per determinare il numero di versione per l'applicazione installata, e l'incremento vostro <manifest android:versionCode ad essere più elevata in l'AndroidManifest.

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

+1

Grazie! E 'stato esattamente questo - ho esagerato con l'esempio della Softkeyboard di un vecchio SDK, e sembra che un esempio di Softkeyboard sia già installato (di default ?!) nei dispositivi di emulazione (ma in una versione diversa, più recente). Dopo aver rinominato la mia applicazione, tutto ha funzionato come previsto ... – ndbd

+0

Grazie ... Stavo lavorando con le demo API e questa applicazione è sempre installata sugli emulatori .. – Khushboo

+1

@Alexander: Puoi aggiornare questa risposta per includere il flag -d? –

27

prima disinstallare l'applicazione dall'emulatore:

adb -e uninstall your.application.package.name 

tentare di installare nuovamente l'applicazione.

+8

Oppure, per un dispositivo fisico connesso, 'adb -s DEVICESERIALNUMBER disinstalla your.application.package.name', dove' DEVICESERIALNUMBER' può essere trovato usando 'adb devices -l'. –

+0

Sembra un passaggio non necessario se vuoi semplicemente eseguire il debug di un'applicazione. –

7

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, tuttavia, come di platform-tools r16 questo non viene più risolto al numero intero corretta. È possibile forzare la ri-installazione utilizzando adb -r o evitare il problema del tutto utilizzando un letterale nel manifesto:

android:versionCode="64" 
+0

Questo era il problema per me, e sono d'accordo che non risolve il versionCode correttamente, anche aumentandolo (es: 65) non evita il INSTALL_FAILED_VERSION_DOWNGRADE –

4

Ciò può verificarsi quando si tenta di installare un debug/APK non firmato sulla cima di un'APK rilascio firmato da il 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 è di uninstall e quindi reinstallare o ri eseguirlo dal IDE.

+0

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

45

Si può anche considerare di aggiungere il flag -d ad adb install. Dovrebbe ignorare questo errore.

+6

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

+3

Grazie! funziona: adb install -r -d abc.apk –

+2

È documentato ora '' -d: consente il downgrade del codice di versione'. Ancora bisogno di separare da '-r' – wisbucky

1

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

Ho scoperto 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 sopra i titoli per farlo coincidere. voilà, problema risolto.

1

Questo errore viene visualizzato nel mio progetto Android con più tipi di file gfx. Alla fine non è stata accettata alcuna modifica nel file manifest.

Perché la mia mancanza di conoscenza dei dispositivi Android dimentico che il mio dispositivo di test 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.

2

Secondo sdk codice src da ... \ 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 di versione precedente rispetto al pacchetto attualmente installato.

+0

non dovrebbe accadere con lo stesso versionCode anche se –

1

INSTALL_FAILED_VERSION_DOWNGRADE

Tutte le app Android hanno un nome di pacchetto. Il nome del pacchetto identifica in modo univoco l'app sul dispositivo. Se lo stesso packageName come app che è già installato sul dispositivo allora questo errore Visualizzazione.

  1. È possibile disinstallare l'applicazione dal dispositivo prima e quindi installare quello fresco.
  2. Si potrebbe semplicemente aumentare il numero di uno ogni volta che viene rilasciata una nuova versione.
+1

Hai ragione il versionCode deve essere aumentato ad ogni release. Tuttavia, non in fase di sviluppo prima di un rilascio. Inoltre, dovresti essere in grado di installare un apk con lo stesso versionCode su un apk già installato (senza disinstallare). La mia impressione è che il problema era il codice di riferimento delle risorse - vedi: https://stackoverflow.com/a/14946938/431296 –

2

In Marshmallow, ho ottenuto questo errore,

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

ricerca di soluzione che ho cercato e sono venuto qui. Ho cancellato l'applicazione ma hanno ancora questo problema in Nexus 6. Più tardi ha scoperto che in,

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

ho avuto lo stesso problema. Stavo ricevendo errore quando ho provato a eseguire il mio dispositivo Android non emulatore.

sudo ionic run android 

sono in grado di risolvere questo problema eseguendo

adb uninstall com.mypackage.name 
0

si può provare questo: adb install -r -d -f your_Apk_path

0

la cosa che continuava a uccidere me era che non sapevo che questa applicazione è stato installato per il mio account ospite (anche se l'ho disinstallato per gli altri account ..)

così ho cercato per l'applicazione nel gestore app, e semplicemente cliccato sulla disinstallazione per tutti gli utenti

enter image description here

0

Basta disinstallare il precedente Apk ed installare la versione aggiornata di APK