Obbiettivo
Se l'immagine OTA è stata scaricata e, come nel mio caso, si è conclusa senza successo, si dovrebbe essere ancora in grado di adb sideload <filename>
farlo manualmente ( video qui ).
Problema / errore
... sfortunatamente l'aggiornamento OTA tramite adb sideload
errori con:
Finding update package...
Opening update package...
Verifying update package...
Installing update...
Verifying current system...
"/system/app/Drive.apk" has unexpected contents.
E:Error in /tmp/update.zip
(Status 7)
Installation aborted.
dove /system/app/Drive.apk
potrebbe essere qualsiasi app di sistema.
Di chi non è la colpa?
- TWRP non è da biasimare, l'ho pensato all'inizio, ma avrebbe funzionato anche con TWRP.
- TitaniumBackup Pro. Da quando ho effettuato il root del mio dispositivo e ho utilizzato una funzionalità di power user, avrei dovuto conoscerne gli effetti collaterali. Ora lo so, però :) ... e c'è una buona possibilità che tu impari a questo da questa risposta ora.
Causa apparente dell'errore
Usando Titanium Backup Pro avevo usato la funzione "freeze" per sbarazzarmi di alcune app di sistema, vale a dire:
- Tastiera ASUS
- Calendario
- Archiviazione del calendario
- com.android.providers.partnerbookmarks
- com.android.sharedstoragebackup
- com.google.android.voicesearch
- Servizi di scambio
- Gmail
- Google One Time Init
- Google Play Books
- Google Play Games
- Riviste di Google Play
- Google Play Movies
- Google Play Music
- Ricerca Google
- Motore di sintesi vocale di Google
- luoghi di ritrovo
- iWnn IME
- Tastiera iWnnIME (bianca)
- Init One Time
Questo era apparentemente il motivo per cui il adb sideload
salvataggio è stato anticipato con il messaggio di errore fornito nella mia domanda.
Ho anche disinstallato alcune delle app di sistema e penso di ricordare che "Drive" (ricordi ?:) /system/app/Drive.apk
era una di queste.
La soluzione
Ho trovato la soluzione su forum.xda-developers.com in questa risposta . L'essenza è che se si dispone di un'immagine modificata, è necessario ripristinarla per far sì che il sideload OTA abbia successo.
Prima scarica l'immagine stock per la build che hai attualmente. Assicurati che sia quello corretto per il tuo dispositivo. Così ho cercato di eseguire l'aggiornamento da JSS15R
a KRT16S
sulla versione Wi-Fi, il che significava che mi serviva per scaricare l' 4.3 (JSS15R)
immagine. Quello era il file razor-jss15r-factory-ec2d4f76.tgz
nel mio caso. Ho quindi decompresso ciò che mi ha dato una sottocartella di nome razor-jss15r
. Al suo interno c'erano script di shell, un .img
file e un .zip
( image-razor-jss15r.zip
). Quest'ultimo doveva essere decompresso. Quindi ho avuto i .img
file nella cartella in cui ho decompresso .zip
:
boot.img
cache.img
recovery.img
system.img
userdata.img
Quindi ho seguito i passaggi indicati nella risposta collegata:
- avvio in bootloader (tenere Volume-downe Powerpremuto direttamente dopo l'accensione)
- collegare l'USB (accertarsi prima che tutti i driver USB siano installati )
- passare alla cartella con i
.img
file precedentemente decompressi
- controlla dal prompt dell'SDK Android che vedi il dispositivo con
fastboot devices
.
- quindi esegui
fastboot flash system system.img
che farà lampeggiare una partizione di sistema stock
Nota: a differenza del post collegato, ho lasciato fuori il passo con il fastboot erase system
perché ciò è apparentemente implicito da fastboot flash system system.img
come si può vedere dall'output. Ho anche lasciato fuori fastboot flash boot boot.img
e fastboot flash recovery recovery.img
perché pensavo fosse improbabile che queste "partizioni" fossero state modificate (avevo ragione). Potresti aver bisogno degli ultimi due, però. Probabilmente dipenderà da ciò che è stato modificato che impedisce il adb sideload
passaggio (ovvero leggere e comprendere il messaggio di errore).
Ecco l'output:
# fastboot flash system system.img
erasing 'system'...
OKAY [ 1.160s]
sending 'system' (603447 KB)...
OKAY [ 19.786s]
writing 'system'...
OKAY [ 26.720s]
finished. total time: 47.668s
Et voilà, un sistema pulito che può essere aggiornato OTA.
Quindi, in breve, potrebbe essere necessario solo fastboot flash system system.img
dall'immagine stock in esecuzione, se si verifica un errore durante la fase di verifica:
Verifying current system...
"/system/<SOME>.apk" has unexpected contents.
E:Error in /tmp/update.zip
(Status 7)
Scarica per le immagini di fabbrica (Nexus 7, entrambi)