Sto provando ad utilizzare ADB su un dispositivo Android stesso, quindi senza alcun computer host. Questo funzionava perfettamente un paio di giorni fa, ma improvvisamente ha smesso di funzionare. Per quanto ne so, nulla è cambiato da allora (ad esempio nessuna app (un) installata). Potrei usare adb backup -f /sdcard/backup.ab <package-name>
in un emulatore di terminale e inizierebbe a fare il backup di quel pacchetto. Quando ci provo ora, restituisce adb: unable to connect for backup
. Indagare utilizzando adb devices
restituisce una lista vuota. Non mi sono mai preso la briga di controllare i dispositivi in precedenza, sono andato direttamente al mio comando adb, perché tutto funzionava.Utilizzo di ADB localmente sul dispositivo (loopback) non mostra dispositivi
Questo era su un HTC Desire con Android 4.4.2, ADB versione 1.0.31. Utilizzando ADB dal mio PC con questo telefono funziona perfettamente, ma questo non è quello che voglio.
Quello che ho cercato
- ho cercato di eseguire le stesse azioni su dispositivi diversi (Asus Padfone 2 su 4.4.2, Samsung Galaxy Note GT-N7000 su 4.4.2, Sony Xperia S 4.1.2.) ma
adb devices
restituisce una lista vuota su tutti loro. Sto iniziando a chiedermi perché questo ha funzionato sul mio HTC Desire, in primo luogo. - Ricerca su Google e Stack Overflow, ma la maggior parte (se non tutti) i risultati si riferiscono a un problema di driver o qualsiasi altro problema che coinvolge un computer host.
adb kill-server
+adb start-server
un centinaio di volte, nonchéstop adbd
+start adbd
.- Attivare e disattivare "Debug USB" nelle impostazioni, nonché revocare l'accesso ai computer precedentemente autorizzati. (Tuttavia, nella situazione di lavoro, non ho mai ricevuto alcun prompt di verifica chiave RSA.)
adb -a devices
-> elenco vuoto.adb usb
->error: device not found
.- Il tentativo di riavviare adb (d) in modalità TCP non è riuscito (anche se ciò non era necessario nella situazione di lavoro).
adb tcpip 5555
restituisceerror: device not found
. getprop
restituisce nessuna voce denominataservice.adb.tcp.port
esetprop service.adb.tcp.port 5555
in modo non riuscito. (Il controllo successivo congetprop service.adb.tcp.port
non restituisce nulla.) Non è necessario il root?)adb connect localhost
restituisceunable to connect to localhost:5555
.- All'avvio del daemon, viene avviato sulla porta 5038 (quando si utilizza ADB dal mio PC, viene avviato 5037).
adb connect localhost:5038
restituisceconnected to localhost:5038
. Tuttavia,adb devices
restituisce ancora una lista vuota eadb backup
restituisceadb: unable to connect for backup
. Inoltreadb shell
restituisceerror: device not found
eadb get-state
restituisceunknown
. Quindi nessun successo qui neanche. - Trovare il mio ip locale utilizzando
getprop dhcp.wlan0.ipaddress
(restituisce 192.168.1.xx) e quindiadb connect 192.168.1.xx
restituisceunable to connect to :5555
.adb connect 192.168.1.xx:5038
->unable to connect to :5038
. L'utilizzo diADBHOST=192.168.1.xx adb start-server
non ha alcun effetto su questi risultati. - Uno dei pochi risultati di ricerca che era in qualche modo pertinente è il thread this nell'AOSP Issue Tracker. Tuttavia, descrive un problema in cui, dopo aver utilizzato
setprop service.adb.tcp.port 5555
,adb devices
mostra almeno un dispositivo, anche se non in linea (ovverolocalhost:5555 offline
).Un po 'vicino alla fine del thread viene raggiunta una soluzione, che comporta la modifica della directory $ HOME in modo da cambiare dove vengono salvate le chiavi RSA, ad es.HOME=/sdcard
. È quindi necessario aggiungere la chiave pubblica a/data/misc/adb/adb_keys utilizzandocat /sdcard/.android/adbkey.pub >> /data/misc/adb/adb_keys
. Tuttavia, presumo che questo abbia bisogno di root? Inoltre, tutto ciò non era necessario nella situazione lavorativa, quindi dubito che la soluzione al mio problema si trovi in questa direzione. This article, derivato dalla discussione su Issue Tracker di AOSP, non parla di aggiunta della chiave pubblica. Tuttavia, l'approccio citato non ha successo. netstat
rendimenti (tra gli altri):Proto: tcp
Recv-Q: 0
Send-Q: 0
Local Address: 127.0.0.1:5038
Foreign Address: 0.0.0.0:*
State: LISTEN
ps
mostra un processo/sbin/adbd
nonché unadb
processo:- USER: shell PID: 92 PPID: 1 VSIZE: 3624 RSS: 264 WCHAN: ffffffff PC: 00000000 S NAME: /sbin/adbd
- USER: u0_a57 PID: 9754 PPID: 1 VSIZE: 3016 RSS: 988 WCHAN: ffffffff PC: 4014f768 S NAME: adb
- (Commands executed from the terminal are executed as USER: u0_a57.)
Direi che è più o meno esso.
Sto cercando una soluzione in cui non è necessaria la radice, in quanto non era necessaria quando l'avevo funzionato prima. Spero che la mia situazione e la mia domanda siano chiare. Per favore fatemi sapere se la mia domanda deve essere migliorata, in quanto questa è la mia prima pubblicazione su Stack Overflow. Speriamo che qualcuno possa aiutarmi con questo. Grazie in anticipo!
Cosa stai cercando di ottenere esattamente? Allo scopo di creare un file di backup senza PC è sufficiente eseguire '/ system/bin/bu backup'. Questo è ciò che 'adb backup' fa quando viene avviato dal PC. –
@AlexP. Grazie per la risposta. Questo potrebbe essere proprio quello di cui ho bisogno, poiché sto cercando di creare un backup senza un PC. Come potrei essere in grado di impostare la posizione in cui verrà salvato il backup? Dal codice sorgente di com.android.commands.bu.Backup, non esiste alcun parametro -f. Inoltre, se sto leggendo l'origine correttamente, il primo argomento passato (anche prima di "backup") viene utilizzato successivamente (come int) per creare un ParcelFileDescriptor – JooPalmer
@AlexP. Tuttavia, '/ system/bin/bu /sdcard/backup.ab backup -all' non crea un file backup.ab sulla sdcard. L'unica cosa che ritorna è un avvertimento "linker: app_process ha relocations di testo.", Che sembra essere dovuto a Xposed. Da quello che ho letto, questo è solo un avvertimento e l'operazione (bu backup) dovrebbe ancora essere eseguita. Non riesco a trovare alcuna prova che venga eseguito. – JooPalmer