2014-11-06 24 views
11

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 restituisce error: device not found.
  • getprop restituisce nessuna voce denominata service.adb.tcp.port e setprop service.adb.tcp.port 5555 in modo non riuscito. (Il controllo successivo con getprop service.adb.tcp.port non restituisce nulla.) Non è necessario il root?)
  • adb connect localhost restituisce unable 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 restituisce connected to localhost:5038. Tuttavia, adb devices restituisce ancora una lista vuota e adb backup restituisce adb: unable to connect for backup. Inoltre adb shell restituisce error: device not found e adb get-state restituisce unknown. Quindi nessun successo qui neanche.
  • Trovare il mio ip locale utilizzando getprop dhcp.wlan0.ipaddress (restituisce 192.168.1.xx) e quindi adb connect 192.168.1.xx restituisce unable to connect to :5555. adb connect 192.168.1.xx:5038 ->unable to connect to :5038. L'utilizzo di ADBHOST=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 (ovvero localhost: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 utilizzando cat /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é un adb 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!

+1

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. –

+0

@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

+0

@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

risposta

-2

Credo che il dispositivo potrebbe essere riavviato. Per ottenere inizialmente il telefono in TCP, è necessario aver eseguito adb tcpip 5555 da un computer. Ma questo non dura per sempre. Se il telefono viene riavviato, sarà necessario eseguire nuovamente adb tcpip 5555 da un computer.

io non sono sicuro di quello che intendevi quando hai detto:

Trying to restart adb(d) in TCP mode is unsuccessful (even though this was not necessary in the working situation). adb tcpip 5555 returns error: device not found.

sei scappato che da un computer? Se proveniva da un computer, non sono sicuro di quale sia il problema. Ma se era dal telefono, quindi non può trovare il dispositivo per cambiare a TCP.

Per risolvere questo problema, adb tcpip 5555 da un computer dovrebbe funzionare.