2014-11-06 10 views
11

Ich versuche ADB auf einem Android-Gerät selbst zu verwenden, also ohne jeden Host-Computer. Das funktionierte vor ein paar Tagen perfekt, aber es hörte plötzlich auf zu arbeiten. Soweit ich weiß, hat sich seitdem nichts geändert (z. B. keine Apps (un) installiert). Ich könnte adb backup -f /sdcard/backup.ab <package-name> in einem Terminal-Emulator verwenden und es würde beginnen, dieses Paket zu sichern. Wenn ich das jetzt versuche, gibt es adb: unable to connect for backup zurück. Die Untersuchung mit adb devices gibt eine leere Liste zurück. Ich habe mich nie darum gekümmert, die Geräte vorher zu überprüfen, ich bin gerade zu meinem adb-Befehl gegangen, weil alles funktioniert hat.Verwendung von ADB lokal auf dem Gerät (Loopback) zeigt keine Geräte

Dies war auf einem HTC Desire mit Android 4.4.2, ADB Version 1.0.31. Die Verwendung von ADB von meinem PC mit diesem Telefon funktioniert perfekt, aber das ist nicht was ich will.

Was ich versucht habe

  • ich versucht habe, die gleichen Aktionen auf verschiedenen Geräten (Asus PadFone 2 auf 4.4.2, Samsung Galaxy Note GT-N7000 auf 4.4.2, Sony Xperia S auszuführen auf 4.1.2.) aber adb devices gibt eine leere Liste auf allen von ihnen zurück. Ich beginne mich zu fragen, warum das überhaupt an meinem HTC Desire funktioniert hat.
  • Durchsuchen von Google und Stack Overflow, aber die meisten (wenn nicht alle) Ergebnisse beziehen sich auf ein Treiberproblem oder ein anderes Problem mit einem Hostcomputer.
  • adb kill-server + adb start-server etwa hundert Mal, sowie stop adbd + start adbd.
  • In den Einstellungen "USB-Debugging" ein- und ausschalten sowie den Zugriff auf zuvor autorisierte Computer sperren. (In der Arbeitssituation habe ich jedoch nie eine Bestätigungsaufforderung für die RSA-Taste erhalten.)
  • adb -a devices -> leere Liste.
  • adb usb ->error: device not found.
  • Der Versuch, adb (d) im TCP-Modus neu zu starten, ist nicht erfolgreich (obwohl dies in der Arbeitssituation nicht notwendig war). adb tcpip 5555 gibt error: device not found zurück.
  • getprop gibt keinen Eintrag mit dem Namen service.adb.tcp.port und setprop service.adb.tcp.port 5555 kehrt stillschweigend fehl. (Die anschließende Überprüfung mit getprop service.adb.tcp.port gibt nichts zurück. Benötigt das keine root?)
  • adb connect localhost gibt unable to connect to localhost:5555 zurück.
  • Wenn der Daemon startet, beginnt er auf Port 5038 (bei Verwendung von ADB von meinem PC startet es auf 5037). adb connect localhost:5038 gibt connected to localhost:5038 zurück. adb devices gibt jedoch immer noch eine leere Liste zurück, und adb backup gibt adb: unable to connect for backup zurück. Außerdem gibt adb shellerror: device not found zurück und adb get-state gibt unknown zurück. Also auch hier kein Erfolg.
  • Suche nach meiner lokalen IP mit getprop dhcp.wlan0.ipaddress (gibt 192.168.1.xx zurück) und dann adb connect 192.168.1.xx gibt unable to connect to :5555 zurück. adb connect 192.168.1.xx:5038 ->unable to connect to :5038. Die Verwendung von ADBHOST=192.168.1.xx adb start-server hat keine Auswirkungen auf diese Ergebnisse.
  • Eines der wenigen Suchergebnisse, das tatsächlich etwas relevant war, ist this Thread auf dem AOSP Issue Tracker. Es beschreibt jedoch ein Problem, bei dem nach der Verwendung von setprop service.adb.tcp.port 5555, adb devices zumindest ein Gerät angezeigt wird, jedoch offline (nämlich localhost:5555 offline).Etwas in der Nähe des Endes des Threads ist eine Lösung erreicht, die das Ändern des $ HOME-Verzeichnisses beinhaltet, um zu ändern, wo die RSA-Schlüssel gespeichert sind, z. HOME=/sdcard. Es ist dann notwendig, den öffentlichen Schlüssel an/data/misc/adb/adb_keys unter Verwendung cat /sdcard/.android/adbkey.pub >> /data/misc/adb/adb_keys anzufügen. Allerdings nehme ich an, dass dies Root benötigt? All dies war in der Arbeitssituation nicht notwendig, daher bezweifle ich, dass die Lösung für mein Problem in dieser Richtung gefunden werden kann. This article, abgeleitet aus dem Thread bei AOSP Issue Tracker, spricht nicht von Anhängen des öffentlichen Schlüssels. Der genannte Ansatz ist jedoch nicht erfolgreich.
  • netstat gibt (unter anderem):

    • Proto: tcp
    • Recv-Q: 0
    • Send-Q: 0
    • Local Address: 127.0.0.1:5038
    • Foreign Address: 0.0.0.0:*
    • State: LISTEN
  • ps zeigt ein /sbin/adbd Prozess sowie ein adb Prozess:

    • 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.)

Ich denke, dass ziemlich viel ist es.

Ich bin auf der Suche nach einer Lösung, wo keine Wurzel benötigt wird, da es nicht benötigt wurde, als ich es vorher funktionierte. Ich hoffe meine Situation und Frage ist klar. Bitte lassen Sie mich wissen, wenn meine Frage verbessert werden muss, da dies das erste Mal auf Stack Overflow ist. Hoffentlich kann mir jemand dabei helfen. Danke im Voraus!

+1

Was versuchen Sie genau zu erreichen? Um eine Backup-Datei ohne PC zu erstellen, führen Sie '/ system/bin/bu backup ' aus. Das macht "adb backup", wenn es vom PC aus gestartet wird. –

+0

@AlexP. Danke für Ihre Antwort. Dies könnte genau das sein, was ich brauche, da ich versuche, ein Backup ohne PC zu erstellen. Wie kann ich den Speicherort für das Backup festlegen? Aus dem Quellcode von com.android.commands.bu.Backup gibt es keinen Parameter -f. Wenn ich die Quelle richtig lese, wird das erste übergebene Argument (auch vor 'Sicherung') später (als int) verwendet, um einen ParcelFileDescriptor – JooPalmer

+0

@AlexP zu erstellen. "/ System/bin/bu /sdcard/backup.ab backup -all" erstellt jedoch keine backup.ab-Datei auf der SD-Karte. Das einzige, was jemals zurückgegeben wird, ist eine Warnung 'linker: app_process hat Textumsetzungen.', Die auf Xpose zurückzuführen zu sein scheint. Von dem, was ich gelesen habe, ist dies nur eine Warnung und die Operation (BU-Backup) sollte immer noch ausgeführt werden. Ich kann einfach keine Beweise finden, dass es ausgeführt wird. – JooPalmer

Antwort

-2

Ich glaube, Ihr Gerät wurde möglicherweise neu gestartet. Um Ihr Telefon zunächst in TCP zu bringen, müssen Sie adb tcpip 5555 von einem Computer ausgeführt haben. Aber das hält nicht ewig. Wenn Ihr Telefon neu gestartet wird, müssen Sie erneut adb tcpip 5555 von einem Computer ausführen.

Ich bin nicht sicher, was du gemeint, als Sie sagten:

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.

Sie von einem Computer, dass Hat laufen? Wenn es von einem Computer kam, dann bin ich mir nicht sicher, was das Problem dort ist. Aber wenn es von dem Telefon war, dann kann es das Gerät nicht finden, um zu tcp zu wechseln.

Um dies zu beheben, sollte adb tcpip 5555 von einem Computer funktionieren.