Как я могу подключиться к Android с ADB через TCP? - PullRequest
818 голосов
/ 09 апреля 2010

Я пытаюсь отладить приложение на Motorola Droid , но у меня возникают трудности с подключением к устройству через USB. Мой сервер разработки представляет собой 64-разрядную виртуальную машину Windows 7, работающую в Hyper-V , и поэтому я не могу подключиться напрямую через USB в гостевой системе или с хоста.

Я установил несколько различных решений USB-over-TCP, но, похоже, возникли проблемы с подключением, поскольку монитор ADB сообщает, что «devicemonitor неоднократно не запускал мониторинг». Есть ли способ подключиться напрямую с клиента на компьютере разработчика к демону на устройстве, используя сеть вместо USB-подключения или, возможно, другие жизнеспособные варианты?

Ответы [ 32 ]

28 голосов
/ 12 августа 2010

Я вообще не знаю, как подключить устройство без USB-подключения, но если вам удастся подключить его, возможно, на другом компьютере, вы можете переключить adbd в режим TCP, введя

adb tcpip <port>

из терминала и подключитесь к своему устройству через wifi с любого ПК в сети:

adb connect <ip>:<port>

Возможно также возможно переключиться в режим TCP с терминала на устройстве.

20 голосов
/ 20 октября 2015

Если вы хотите легко подключить ваше устройство для запуска, отладки или развертывания приложений Android через WiFi, вы можете использовать разработанный мной плагин IntelliJ с открытым исходным кодом. Здесь - код, а здесь плагин готов к использованию.

Использование довольно просто. Здесь у вас есть GIF:

enter image description here

11 голосов
/ 24 января 2011

Как сказал Брайан:

Согласно сообщению на xda-developers, вы можете включить ADB через WiFi с устройства с помощью команд

setprop service.adb.tcp.порт 5555

stop adbd

start adbd

И вы можете отключить его и вернуть ADB для прослушивания по USB с помощью

setprop service.adb.tcp.порт -1

stop adbd

start adbd

Если у вас уже есть доступ через USB, переключиться на использование WiFi еще проще.Из командной строки на компьютере, к которому подключено устройство через USB, введите команды

adb tcpip 5555

adb connect 192.168.0.101:5555

Чтобы сообщить ADBдемон возвращается к прослушиванию через USB

adb usb

В Android Market также есть несколько приложений, которые автоматизируют этот процесс.

Это работает. Вам просто нужнополучить доступ к оболочке Android и ввести эти команды ...

На Маркете есть еще одно (более простое) решение: adbWireless, оно автоматически настроит ваш телефон.

Требуется рут!для обоих ...

9 голосов
/ 19 января 2011
adb tcpip 5555

Странно, но это работает только для меня, если у меня подключен USB-кабель, тогда я могу отключить USB и пойти на него со всем остальным adb.

и то же самое при возврате на usb,

adb usb

будет работать только при подключении USB.

Неважно, если я выпущу

setprop service.adb.tcp.port 5555

или

setprop service.adb.tcp.port -1

затем остановите и запустите adbd, мне все еще нужен USB-кабель или он не работает.

Так что, если бы мой ADB через usb не работал, держу пари, я бы тоже не смог включить ADB через WiFi.

7 голосов
/ 14 июля 2012

Чтобы переключаться между режимами TCP и USB с помощью одной команды, вы можете добавить это к /init.rc:

on property:service.adb.tcp.port=*
    restart adbd

on property:service.adb.tcp.enable=1
    setprop service.adb.tcp.port 5555

on property:service.adb.tcp.enable=0
    setprop service.adb.tcp.port -1

И теперь вы можете использовать свойство service.adb.tcp.enable, чтобы включить или отключить прослушивание на порту 5555. Запустите netstat, чтобы проверить, прослушивает ли оно. Как вы можете видеть, это также сработает, если вы захотите изменить service.adb.tcp.port вручную.

7 голосов
/ 16 октября 2018

Функция утилиты Bash:

function adb-connect-to-wifi {
    ip="$(adb shell ip route | awk '{print $9}')"
    port=5555
    adb tcpip ${port}
    adb connect ${ip}:${port}
}
7 голосов
/ 11 марта 2016

ШАГ 1.

Убедитесь, что и ваш хост-компьютер adb и устройство Android находятся в одной сети Wifi.

ШАГ 2.

Подключите устройство Android к компьютеру с помощью USB-кабеля. Как только вы это сделаете, ваш хост-компьютер обнаружит ваше устройство, и ADB начнет работать в режиме USB на компьютере. Вы можете проверить подключенные устройства с помощью adb devices, тогда как убедитесь, что adb работает в режиме USB, выполнив adb usb.

$ adb usb
restarting in USB mode
$ adb devices
List of devices attached
ZX1D63HX9R  device


ШАГ 3.

Перезапустите adb в режиме tcpip с помощью этой команды:

$ adb tcpip 5556
restarting in TCP mode port: 5556


ШАГ 4.

Узнайте IP-адрес устройства Android. Есть несколько способов сделать это:

  • WAY: 1 Зайдите в Настройки -> О телефоне / планшете -> Состояние -> IP-адрес.
  • WAY: 2 Перейти к списку доступных сетей Wi-Fi. Тот, к которому вы подключены, нажмите на него и узнайте свой IP.
  • WAY: 3 Попробуйте $ adb shell netcfg.

Теперь, когда вы знаете IP-адрес вашего устройства, подключите к нему хост adb.

$ adb connect 192.168.0.102:5556
already connected to 192.168.0.102:5556
$ adb devices
List of devices attached
ZX1D63HX9R  device
192.168.0.102:5556  device


ШАГ 5.

Отключите USB-кабель, и вы должны быть подключены к вашему устройству. Если вы не видите его в adb devices, просто переподключитесь, используя команду предыдущего шага:

$ adb connect 192.168.0.102:5556
connected to 192.168.0.102:5556
$ adb devices
List of devices attached
192.168.0.102:5556  device

Либо вам сейчас пора, либо вам нужно будет убить свой сервер adb, выполнив adb kill-server и еще раз повторить все шаги.

Надеюсь, это поможет!


Ссылка:

5 голосов
/ 18 февраля 2011

Вы также можете использовать переадресацию локального порта SSH. Но это все еще вовлекает кабель USB. Подключите телефон с помощью USB к компьютеру (хосту) с запущенным sshd. На удаленном (гостевом) компьютере запустите клиент SSH, способный к перенаправлению / туннелированию портов. Пример:

plink -L 5037:localhost:5037 <host_IP_address>

Я использую эту конструкцию для подключения моего устройства к виртуальной машине. Eltima USB to Ethernet была недостаточно стабильной (таймауты во время отладки).

SSH туннелирование работает бесплатно и более надежно.

4 голосов
/ 17 июля 2012

Другие ответы меня смущают. Гораздо проще использовать adbWireless:

http://ppareit.github.com/AdbConnect/

Просто установите приложение на свой телефон, чтобы переключить отладку по Wi-Fi, установите плагин Eclipse, и все готово.

3 голосов
/ 10 ноября 2014

Вот расширение ответа Брайана по Bluetooth:

  1. В Linux используйте Blueman для совместного доступа к Интернету через ПК через Bluetooth:

    $ 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. Использование сети Bluetooth для команд ADB:

    $ 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
    

После возврата в режим USB:

$ adb disconnect
$ adb usb

Примечание: Bluetooth 3.0 и 4.0 могут развивать скорость до 24 Мбит / с .

...