879 Stimmen

Wie kann ich eine Verbindung zu Android mit ADB über TCP herstellen?

Ich versuche, eine Anwendung auf einem Computer zu debuggen. Motorola Droid aber ich habe Schwierigkeiten, mich über USB mit dem Gerät zu verbinden. Mein Entwicklungsserver ist eine Windows 7 64-Bit-VM, die in Hyper-V und kann daher keine direkte USB-Verbindung im Gast oder vom Host herstellen.

Ich habe einige verschiedene USB-over-TCP-Lösungen installiert, aber die Verbindung scheint Probleme zu haben, da die ADB monitor meldet wiederholt "devicemonitor kann die Überwachung nicht starten". Gibt es eine Möglichkeit, eine direkte Verbindung zwischen dem Client auf dem Entwicklungscomputer und dem Daemon auf dem Gerät über das Netzwerk statt über die USB-Verbindung herzustellen, oder gibt es möglicherweise eine andere praktikable Option?

3voto

beguinner Punkte 31

Schritte :

  1. su -- Um zum Superuser zu wechseln.
  2. setprop service.adb.tcp.port 5555 - Angabe des tcp Ports - 5555 ist hier die Portnummer
  3. stop adbd - So beenden Sie den adbd-Dienst.
  4. start adbd - So starten Sie den adbd-Dienst.

dies funktioniert perfekt mit ssh von meinem Windows-PC aus

Ich versuche, dies beim Booten auf meinem Cyanogen-Handy zu tun oder es mit Plink zu starten. Mit plink kann ich nicht starten Shell mit su Recht ... sudo oder su Befehl nicht funktioniert. Beim Booten weiß ich nicht, wie es funktioniert! Mein Shell-Programm funktioniert über ssh mit su -c "sh /storage/sdcard1/start_adb.sh" mit den letzten 3 Befehlen (ohne su --)

Merci

3voto

Felizk Punkte 31

Ich habe eine Batch-Datei für die automatische Aktivierung und Verbindung von ADB über TCP mit einem über USB angeschlossenen Gerät zusammengestellt. Damit müssen Sie die IP nicht manuell eingeben.

@echo off
setlocal

REM Use a default env variable to find adb if possible
if NOT "%AndroidSDK%" == "" set PATH=%PATH%;%AndroidSDK%\platform-tools

REM If off is first parameter then we turn off the tcp connection.
if "%1%" == "off" goto off

REM Set vars
set port=%1
set int=%2
if "%port%" == "" set port=5557
if "%int%" == "" set int=wlan0

REM Enable TCP
adb -d wait-for-device tcpip %port%

REM Get IP Address from device
set shellCmd="ip addr show %int% | grep 'inet [0-9]{1,3}(\.[0-9]{1,3}){3}' -oE | grep '[0-9]{1,3}(\.[0-9]{1,3}){3}' -oE"
for /f %%i in ('adb wait-for-device shell %shellCmd%') do set IP=%%i

REM Connect ADB to device
adb connect %IP%:%port%

goto end

:fail
echo adbWifi [port] [interface]
echo adbWifi off
goto end

:off
adb wait-for-device usb

:end

3voto

Wernight Punkte 33996

Hier ist eine Erweiterung der Antwort von Brian mit Bluetooth:

  1. Verwenden Sie unter Linux Blueman, um das PC-Internet über Bluetooth mit Ihrem Gerät zu teilen:

    $ sudo apt-get install blueman
    $ blueman-manager
    Pair them: Search devices after enabling Bluetooth
    on your phone and making it visible
    $ blueman-services
    Network > [X] Network Access Point (NAP)
    Your Phone > Settings > Bluetooth > Paired Device > [X] Internet access
  2. Verwenden Sie das Bluetooth-Netzwerk für ADB-Befehle:

    $ adb tcpip 5555
    $ adb connect $(adb shell ip -f inet addr show bt-pan | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | head -n1):5555

Danach kehren Sie in den USB-Modus zurück:

$ adb disconnect
$ adb usb

Note : Bluetooth 3.0 und 4.0 können bis zu 24 Mbit/s erreichen .

2voto

noman404 Punkte 888

Sie müssen folgende Dinge tun:

  • Fügen Sie zunächst ADB zu Ihrem Umgebungspfad hinzu.
  • Geben Sie über Ihre CLI den folgenden Befehl ein adb connect IHR_GERÄT_IP:PORT_NUMMER (Beispiel adb connect 192.168.100.100:5555 )

2voto

Radha Manohar Punkte 399

Ich stehe vor dem gleichen Problem, aber ein einfacher Hack adb reverse tcp:<PORT> tcp:<PORT> hat für mich funktioniert. Es erlaubt dem System, tcp-Anfragen zu akzeptieren.

Vielen Dank fürs Lesen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X