Il backup ADB crea un file a 0 byte; richiede la password di backup corrente anche se non ne ho mai impostata una; "Impossibile impostare la password" per la password di backup del desktop


49

Il problema:

Ogni volta che eseguo il backup ADB, ricevo un messaggio nella parte inferiore della schermata principale che dice Backup starting..., seguito da un messaggio che dice Backup finished alcuni secondi dopo nonostante il fatto che sto usando 17 GB di memoria del dispositivo e viene creato il file di backup risultante con una dimensione di 0 byte. Non ricevo messaggi di errore, nessun feedback che indica che qualcosa non va, per non parlare di ciò che è sbagliato. Sembra funzionare, ma troppo rapidamente e il file di backup è vuoto.

Il processo:

  1. Confermo che il dispositivo viene riconosciuto da ADB mediante il adb devicescomando e ricevo il seguente output:

    List of devices attached
    8e1f368a        device
    
  2. Emetto il comando di backup ADB (dettagli da seguire).

  3. Ricevo il seguente messaggio al prompt dei comandi:

    Now unlock your device and confirm the backup operation.
    

    ... e la seguente richiesta al telefono:

    inserisci qui la descrizione dell'immagine

    Non fa differenza quello che faccio qui (dettagli da seguire).

  4. Tocco il Back up my datapulsante (angolo in basso a destra).

  5. Il telefono torna alla schermata principale e mi mostra il Backup starting...messaggio, quindi il Backup finishedmessaggio qualche secondo dopo. Viene creato un file a 0 byte, denominato backup.ab predefinito o qualunque cosa abbia specificato con l' opzione -f .

Il comando di backup ADB (utilizzato nel passaggio 2):

Ho provato più combinazioni di opzioni, che vanno da semplici come

adb backup -all

a cose come

adb backup -all -apk -s 8e1f368a -f 'C:\Data Files\PDA\Backups\ADB\GalaxyS4_20140919.ab'

Ho anche provato ad aggiungere lo -nosystemswitch dopo aver letto questo e questo , il che indica che il tentativo di includere un backup del sistema su un dispositivo non root può comportare un file a 0 byte e che questo switch deve essere utilizzato. Non fa differenza, il processo si completa ancora in pochi secondi e ottengo ancora un file a 0 byte.

Richiesta password "Backup completo" (passaggio 3):

Sono abbastanza sicuro di non aver mai impostato una password di backup prima. Non ho mai avuto l'occasione di impostare questa password o accedere a questa impostazione in alcun modo prima. Tuttavia, ho provato tutto quanto segue:

  • Lasciando vuote entrambe le password
  • Lasciare vuota la "password di backup corrente" e inserire una nuova password nella seconda casella
  • Immettere il PIN di blocco schermo corrente e tutti i PIN che abbia mai usato in passato come "password di backup corrente".
  • Inserendo tutte le password che mi viene in mente che avrei mai usato per qualsiasi cosa su questo dispositivo

In tutti i casi, il comportamento è esattamente lo stesso descritto nel passaggio 5. Non ricevo errori o alcun tipo di indicazione che qualcosa non va o che le mie password non sono valide e non ho idea del fatto che si stia effettivamente aspettando una password corrente o che il campo deve essere lasciato vuoto. (La schermata in questa risposta e in molti altri forum di supporto che ho visto sembra implicare che la casella "password di backup corrente" non verrebbe visualizzata se non è presente la password corrente, ma è solo un'inferenza; nulla chiarisce se è attualmente richiesta una password corrente).

Sospetto che la password richiesta sia la "Password di backup del desktop" impostata nelle Opzioni sviluppatore:

inserisci qui la descrizione dell'immagine

Non ho mai impostato quella password prima. Se provo a impostarne uno, ricevo un messaggio che diceFailed to set backup password.

Nella ricerca di informazioni su questo errore, ho riscontrato almeno un altro caso in cui qualcuno che ha riscontrato questo problema ha affermato che ciò gli stava impedendo di utilizzare il backup ADB, ma non era specifico di ciò che accade quando tenta di utilizzare ADB di backup.

La maggior parte delle persone che hanno ricevuto questo messaggio non hanno mai impostato la password prima di dire che la soluzione era lasciare vuota la password corrente, ma l'ho provato in primo luogo e non ha funzionato. Ho trovato una domanda di un'altra persona che ha riscontrato questo problema ed ero sicuro che non avesse impostato la password prima . Purtroppo non sembra che abbia mai avuto una soluzione o una spiegazione.

Indipendentemente dal fatto che ADB stia cercando la "Password di backup desktop" o che la password di crittografia ADB sia qualcosa di separato, mi viene in mente il motivo per cui ADB richiederebbe di inserire una password precedente per avviare un nuovo backup. Non sto cercando di ripristinare, sovrascrivere o accedere in alcun modo a dati precedentemente crittografati, quindi anche se in precedenza era stata impostata una password di crittografia per un backup , non riesco a immaginare perché qualcuno possa pensare che sia una buona idea impedirti di eseguire il backup del dispositivo se non ricordi quale password hai utilizzato per crittografare i backup in passato.

Informazioni aggiuntive:

Modello: Samsung Galaxy S4 SCH-I545
Versione kernel: 3.4.0
Versione SO: 4.4.2
Android SDK Tools versione: 1.16 Il
debug USB è abilitato.

Nota che la mia ragione per usare il backup ADB è di fare un backup completo del mio telefono per essere al sicuro prima di eseguirne il root * in modo da poter usare strumenti di backup nandroid come il backup Titanium. Quindi, qualsiasi suggerimento riguardante il rooting del mio telefono sarebbe un Catch-22, non una soluzione. Inutile dire che anche un ripristino delle impostazioni di fabbrica non è una soluzione, poiché vanificherebbe l'intero scopo dell'esecuzione del backup.

Il telefono è impostato per la sincronizzazione con i server Exchange della mia azienda e ci sono alcuni criteri applicati dal server. Avevo pensato che il dispositivo fosse crittografato quando ho impostato la sincronizzazione con l'account aziendale, ma a quanto pare non è attualmente crittografato. In effetti, questo è ciò che ha messo in moto questa catena di eventi: sto ricevendo un messaggio che mi dice che devo crittografare il dispositivo per continuare a connettermi ai server aziendali. Voglio fare un backup nandroid prima della crittografia, che richiede il rooting, e voglio usare il backup ADB prima del rooting.


* Sì, sono consapevole che si suppone che Towelroot sia sicuro, ma preferirei non correre rischi e vorrei risolvere o almeno comprendere questo problema nel caso in cui sorgessero problemi correlati in futuro.


Ho avuto diversi problemi con ADB su uno dei miei tablet (con o senza root, in entrambi i casi) che erano simili (al contrario: mentre adb backupfunzionava bene, adb restoresempre fallito). Si è scoperto che si trattava di un problema di autorizzazione (il produttore aveva incasinato la ROM), quindi adb restorenon era in grado di leggere il file di backup una volta trasferito sul dispositivo. È stato un po 'difficile da trovare, e non sono sicuro che qualcosa di simile sia davvero il caso qui; ma potrebbe valere la pena verificarlo.
Izzy

2
Per coloro che sarebbero finiti qui con lo stesso problema di 0 byte: ho avuto questo problema perché una volta ho impostato la password del desktop in Impostazioni e l'ho dimenticata. Poiché il dispositivo è rootato, ho seguito questa risposta (la mia) e tutto è andato bene.
Firelord

Potresti anche consultare: code.google.com/p/android/issues/detail?id=47009 - Se hai crittografato il tuo telefono, potrebbe essere necessario utilizzare la password di crittografia come "password corrente" in tutte le istruzioni: nella schermata "Backup completo" o in "Password backup desktop".
Marco Leogrande,

@AdiInbar l'hai mai risolto?
codecowboy,

In realtà mi ci è voluto un po 'per trovarlo. Non so se non stavo usando le parole chiave giuste ma questo è esattamente quello di cui avevo bisogno!
Thomas

Risposte:


31

Risposta breve

Prova a utilizzare una versione precedente di adb. 1.0.32 non ha funzionato per me, ma 1.0.31 ha funzionato.

Risposta lunga

Ho appena riscontrato questo problema su un Nexus 5 con CyanogenMod 11 (basato su Android 4.4) utilizzando la versione corrente di Platform Tools e ADB (Android Debug Bridge versione 1.0.32 Revisione eac51f2bb6a8-android).

Usando adb logcatper guardare i registri del dispositivo, ho notato che dopo aver richiamato adb backup -apk -obb -shared -all -nosystemc'erano alcune voci di registro sospette:

V/BackupManagerService(  811): Requesting full backup: apks=false obb=false shared=false all=false pkgs=[Ljava.lang.String;@4181ffc8
W/BackupManagerService(  811): Unknown package  '-apk' '-obb' '-shared' '-all' '-nosystem', skipping

Dove sembra che il dispositivo stia interpretando le opzioni della riga di comando come argomenti non di opzione e producendo un errore perché non sono nomi di pacchetti installati. Questo mi ha fatto sospettare che il protocollo adb o le opzioni di chiamata di comando / servizio fossero cambiate sul dispositivo rispetto all'host, quindi ho provato una versione precedente di adb e voilà, ha funzionato.

Ho fatto un po 'di ricerche e mi sono imbattuto in una modifica a Usa escape_arg in "backup adb" , che ora fa sì che tutti gli argomenti siano tra virgolette singole quando si invoca /system/bin/bu backup. Ciò spiega il comportamento e gli argomenti tra virgolette singole nel messaggio di registro. Tuttavia, non sembra corrispondere al momento in cui si è verificato l'errore. Suggerirebbe inoltre che il problema sia molto più diffuso di quanto sembri. Quindi sono titubante nel chiamarla causa, ma può essere un buon punto di partenza per ulteriori indagini.


2
L'uso di una versione precedente (1.0.31) ha risolto il mio problema. Questa domanda stackoverflow.com/q/9555337/1741542 e soprattutto questa risposta stackoverflow.com/a/23022718/1741542 mi ha aiutato a trovare una versione precedente, ad esempio platform-tools_r20-linux.zip.
Olaf Dietsche,

Sembra che non funzioni con tutti i modelli però. Mentre ho fatto un backup completo di un Samsung S3 mini (Android 4.2) senza alcun problema, non ho potuto farlo con un tablet, che è su Android 4.0. Ho provato tutto da adb-r10 fino adb-r23 (escluso adb-r15) senza successo.
Olaf Dietsche,

4
Ho avuto un problema simile con adb 1.0.32 e un Nexus 5 (Android 6). L'ho risolto citando esplicitamente gli argomenti di backup, ovvero eseguendo adb backup '-noapk -noshared -all -nosystem'anziché adb backup -noapk -noshared -all -nosystem(all'interno di una shell bash). Senza le virgolette ricevo messaggi di logcat come questo: 'unknown backup flag -all: -nosystem: -noapk', 'nessun pacchetto di backup fornito e né -condiviso né -tutto dato' e infine 'Finished.'.
maxschlepzig,

Ho finalmente ottenuto un backup completo anche con Android 4.0. Stupido, è stato solo un riavvio del tablet, che mi ha fatto andare avanti.
Olaf Dietsche,

5
Grazie! A proposito, puoi scaricare adb 1.0.31 per tutte le piattaforme qui: ftp.mozilla.org/pub/labs/r2d2b2g
eWolf

16

Basandosi sulla risposta di kevenoid, potrebbe dipendere dalla versione di adb in esecuzione sul telefono.

Puoi scoprire quale versione del telefono funziona in modo nativo procedendo come segue:

Per prima cosa scopri quale versione stai utilizzando sul desktop

adb version

Quindi apri la shell sul tuo telefono

adb shell

Una volta aperta la shell, è possibile eseguire

adb version

Quindi uscire dalla shell eseguendo

exit

Ho scoperto che il mio telefono stava eseguendo la versione 1.0.31 e non 1.0.32 (è un Samsung Note 2)

Ho provato a usare virgolette o caratteri di escape come mostrato da Hunter, ma nessuno di quelli funzionava dalla riga di comando di Windows. Tuttavia, il downgrade ha risolto il problema di incompatibilità tra le due versioni.

Sono stato in grado di trovare la versione precedente seguendo le istruzioni qui: https://stackoverflow.com/a/23022718/1741542

Il link per il download che ho usato era:
http://dl-ssl.google.com/android/repository/platform-tools_r20-windows.zip

Altre piattaforme:


Esiste un modo per aggiornare la versione adb sul telefono?
Bin Wang,

10

Le altre risposte sugli argomenti dei comandi citati sono accurate. Ho scoperto che se sfuggite agli spazi tra gli argomenti, funziona.

Come questo: adb backup -apk\ -shared\ -all\ -system


Questa potrebbe non essere la soluzione al problema di OP, ma è una soluzione migliore al problema di @ Kevinoid rispetto all'uso di un vecchio ADB, che non ha funzionato per me.
Hunter Perrin,

Questo è un duplicato della risposta di Kevinoid senza la logica. Tuttavia, ha funzionato bene per me e preferisco usare \ to '
Neil Mayhew il

1
Questa soluzione ha funzionato per me, non è necessario eseguire il downgrade di adb
Freethinker il

Posso confermare il sospetto di @HunterPerrin che questo sia un problema diverso perché ho provato prima questo e non ha risolto il mio problema ma il secondo sono andato a 1.0.31 adb ha iniziato a copiare correttamente
Sirene

7

Nessuna delle soluzioni alternative ha funzionato per me qui e non voglio eseguire il downgrade dei miei strumenti SDK. Ecco cosa mi è venuto in mente: salta adb backupsul computer e vai direttamente al dispositivo tramite adb shell.

$adb version
Android Debug Bridge version 1.0.35
Revision fc2a139a55f5-android

$ adb shell
shell@jflte:/ $ bu 1 backup -apk app.package.name > /sdcard/backup.ab
shell@jflte:/ $ exit

$adb pull /sdcard/backup.ab
[100%] /sdcard/backup.ab

Questo chiama /system/bin/bue scarica il file di backup su STDOUT (descrittore di file n. 1). I parametri sono gli stessi adb backup <params>-> bu 1 backup <params>. L'output viene reindirizzato a un file sul dispositivo e quindi può essere estratto come qualsiasi file.

L'unico inconveniente è che non è possibile eseguire un backup completo se il dispositivo è pieno per metà. Questo può essere risolto se si dispone di uno slot SdCard esterno. bupuò scrivere lì anche su Android 4.4.2, perché è un'app di sistema. /mnt/extSdCard/backup.abha lavorato lo stesso per me come /sdcard.


4

sospiro mi dispiace davvero se questo è il caso, e sembri stare attento a giudicare dai tuoi screenshot e dalle righe di comando, ma ho scoperto con mio disappunto gli stessi sintomi e ho pensato di pubblicare solo nel caso in cui futuri scopritori lo facessero qui. Si scopre che adb è molto esigente in trattini singoli o doppi nelle sue opzioni. Per me, i doppi trattini hanno riprodotto esattamente questo caso: stesso messaggio al telefono, stesso file da 0 byte. Singoli trattini anche se ci sono nomi di argomenti lunghi che funzionano come un fascino.

Nel caso in cui sia importante, il mio telefono è un Samsung Galazy Note 2 AT&T SGH-i317 con Android 5.1 / Cyanogenmod 12.1.


2
Sono un po 'confuso se questo dovrebbe essere pubblicato come risposta o commento. OP mostra che sta usando un trattino singolo, non un doppio trattino, quindi la tua risposta probabilmente ha mancato il segno. Ammetto che questa risposta sia informativa (valore aggiuntivo), ma non sembra rispondere al problema di OP.
Andrew T.

Questo ha risolto il mio problema.
John Freeman,

Si prega di pubblicare le vostre attuali righe di comando.
RoboJ1M,

2

È necessario eseguire il comando di backup adb su adb versione 1.0.31.

Per Windows ho fatto:

log:

$ adb backup -apk -obb -shared -all -system -f bckp.ab

il server adb non è aggiornato. uccidendo ...

  • demone avviato correttamente *

Ora sblocca il tuo dispositivo e conferma l'operazione di backup.

... quindi riportare tutto alla normalità.


1

OK, è così che ho risolto il mio.

Ho provato la soluzione di Hunter Perrin:

adb backup -apk\ -shared\ -all\ -system

Ma è appena tornato immediatamente senza errori, senza schermata di backup sul telefono.

Attraverso tentativi ed errori questo ha funzionato per me:

adb backup -all\

1

Penso di avere una soluzione per coloro che utilizzano 1.0.32:

inserisci una password quando richiesto sullo schermo Android

Nonostante il fatto che dice che utilizzerà la password predefinita se non si inserisce nessuno, credo che non lo faccia e adb 1.0.32 forse non consente la creazione di backup non crittografati.

Inserendo una password ha funzionato per me, poi ho finito per usare "Android Backup Extractor" (Warning Sourceforge) e "Java Cryptography Extension (JCE) Unlimited Strength Policy di giurisdizione" per estrarla in un file tar.


1

Ho riscontrato un problema inverso: 1.0.31 con un telefono più recente (Android 7) non riesce. 1.0.31 utilizza: come separatore quando si passano argomenti al telefono. Come adb logcat -s BackupManagerServicemostra, anche il nuovo adb sul telefono non può gestire il vecchio stile: 02-19 01:59:44.330 1100 9830 W BackupManagerService: Unknown package com.gameloft.android.ANMP.GloftPOHM:-apk, skipping Fortunatamente, il nuovo adb accetta anche spazi come separatore, quindi racchiudere gli argomenti tra virgolette doppie, ad esempio: adb.exe backup "com.gameloft.android.ANMP.GloftPOHM -apk" -f game-backup.ab

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.