2012-11-15 5 views
98

Sembra che il più recente Android 4.2 abbia introdotto questa condizione di errore durante l'installazione quando si tenta di installare un APK con una versione inferiore. Nelle precedenti versioni di Android, si sarebbe in grado di installare APK meno recenti semplicemente tramite adb install -r <link to APK>. Per motivi di debug, ho spesso bisogno di rivedere i vecchi APK; e il flag -r sostituirà la versione precedente nelle versioni precedenti di Android. C'è un work-around qui per ignorare [INSTALL_FAILED_VERSION_DOWNGRADE]?C'è un modo per ignorare INSTALL_FAILED_VERSION_DOWNGRADE sull'installazione dell'applicazione con Android Debug Bridge?

+0

Intendi, oltre a disinstallare la versione più recente? – CommonsWare

+0

corretto; Supponevo che il flag '-r' potesse gestirlo. – AaronMT

+4

Questa domanda è valida anche per i casi in cui si hanno (in modo errato) build con numeri errati. Per esempio. forse la tua v1.0 da una finestra di sviluppo ha un versionCode superiore a v2.0 da un server di build. – parkerfath

risposta

232

sembra che la l'ultima versione di strumenti adb ha un "consenti contrassegno di downgrade" che non è mostrato nella guida di adb, ma è mostrato nella guida "pm" sul dispositivo. Quindi utilizzare: adb install -r -d <link to apk>

+1

Provato con 'adb install -rd ' che non ha funzionato. Il tuo versino (con opzioni separate) funziona bene. Grazie! – MarSoft

+1

E sembra essere documentato ora! Solo che non devi usare -r -d, -rd non funziona – plaisthos

+0

Ad esempio, per disinstallare (downgrade) Waze 4.0.0.2 e installare la versione 3.9.5.3: ** adb install -r -d Waze_3.9.5.3 .apk **. In questo modo non perderai i dati dell'app. – derekg

13

Hai attivato più account sul tuo dispositivo (e apri il tuo apk tramite ADB)? Se è così, devi rimuovere l'apk in ogni account. Dopo la disinstallazione completa, la tua spinta sarà OK.

+0

Il ripristino del backup tramite Titanium Backup non ha funzionato. L'installazione recente non ha funzionato. L'installazione tramite APK e/o l'installazione di adb non ha funzionato. Questo mi è costato 1,5 ore e il tuo semplice consiglio ha fatto il trucco. Grazie! –

16

Puoi provare a utilizzare adb uninstall -k <package> e quindi installare l'apk precedente. Dalla guida utilizzo adb:

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

ho provato io stesso con il mio apk, e sembra funzionare per la maggior parte dei dati (alcuni dati come RawContacts non è stato salvato)

+0

Sembra che questo comando non esegua effettivamente la disinstallazione, ma produca semplicemente un avviso. Il comando per l'effettiva esecuzione di questo sembra essere 'adb shell pm uninstall -k '. –

+0

Questo è utile anche per il downgrade, se adb -d continua a lamentarsi come ha fatto per me. –

1

Nel mio caso si trattava di una versione obsoleta di Google Play Services inclusa nel mio progetto. Sto usando Android Studio. Ho eseguito un aggiornamento su SDK e ho importato la libreria aggiornata e quell'errore è andato via. Quindi il mio suggerimento: aggiornare le ultime librerie a cui fa riferimento il tuo progetto.

0

È 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, disinstallare la copia correntemente installata oppure aprire Impostazioni> App per determinare il numero di versione per l'app installata e incrementare il proprio versionCode per essere più elevato in AndroidManifest.

+1

Perché è stato downvoted? Potrebbe non essere la risposta migliore, ma sembra una soluzione valida (e forse la più semplice) per qualcuno che è nuovo a questo! * Si prega di * lasciare commenti per risposte come questa, in quanto sono * essenziali * non solo per il rispondente, ma per i lettori che visitano questa domanda in seguito. : - | –

+0

Questo è ovviamente qualcosa che può essere fatto. È già ovvio. La domanda è chiedere se c'è un modo per saltare questo controllo e consentire il downgrade. E la risposta è si. Questa risposta fondamentalmente dice no. – tasomaniac

0

Ho anche affrontato lo stesso problem.It può essere risolto con la procedura riportata di seguito, che sono più facile che l'eliminazione di qualsiasi apk dal dispositivo -

1) Eseguire il comando "adb logcat | grep -i versione" sul terminale

2) Cercare la riga particolare, che verrà mostrato alla fine della logcat -

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

3) copiare la versione corrente (ad esempio 9109) e incollarlo in AndroidManifest.xml come mostrato di seguito -

android:versionCode="9109" 

Ora pulire e ricostruire l'applicazione e dovrebbe funzionare correttamente.

Problemi correlati