Беспроводная отладка (Wi-Fi)

Рейтинг: 67.6% · 8 голосов
Полный курс по Android Debug Bridge: установка, подключение, shell, логи, dumpsys, автоматизация, root, беспроводная отладка. Уроки по главам с обсуждением.
Ответить
Аватара пользователя
android_roman
Сообщения: 45
Зарегистрирован: 11 май 2026, 05:31

Беспроводная отладка (Wi-Fi)

Сообщение android_roman »

АкадемияADB: Android Debug BridgeГлава 20 из 29
Оглавление курса (29)
  1. Введение в Android Debug Bridge
  2. Установка и настройка рабочей среды
  3. Подключение устройства (проводное и беспроводное)
  4. Базовые команды ADB и управление сервером
  5. Команды состояния и перезагрузки
  6. Навигация по файловой системе
  7. Управление пакетами приложений
  8. Логирование с помощью logcat
  9. Системные дампы и диагностика (dumpsys)
  10. Анализ производительности в реальном времени
  11. Эмуляция ввода (input)
  12. Управление Activity и Intent (am)
  13. Работа с оконным менеджером (wm)
  14. Захват экрана и запись видео
  15. Root-доступ и его применение
  16. Модификация системных настроек через settings
  17. Команды для поставщиков контента (content)
  18. Резервное копирование и восстановление (backup)
  19. Проброс портов и туннелирование
  20. Беспроводная отладка (Wi-Fi) (вы здесь)
  21. Взаимодействие с эмуляторами
  22. Написание скриптов на Bash/CMD/PowerShell
  23. ADB в языках программирования
  24. Автоматизация тестирования с ADB
  25. Безопасность и лучшие практики
  26. ADB на Android TV, Wear OS и IoT
  27. Восстановление и низкоуровневые операции
  28. Расширенные возможности оболочки и инструменты
  29. Отладка самого ADB и устранение неполадок
Кабель хорош всем, кроме самого кабеля. Когда тестируешь акселерометр, NFC-оплату или приложение камеры, провод физически мешает, а разъём ещё и разбалтывается от постоянного передёргивания. В этой главе избавляемся от провода полностью: сначала классический TCP-режим, который работает почти на любом Android, потом нормальная беспроводная отладка с сопряжением из Android 11+.

Как это устроено внутри:

Демон adbd на устройстве умеет слушать не только USB-транспорт, но и TCP-сокет. Сервер adb на компьютере подключается к нему по сети, и дальше протокол работает ровно так же, как по проводу: те же /, , , проброс портов из главы 19. RSA-авторизация из главы 3 никуда не девается. Разница между классикой и Android 11+ в том, как устанавливается доверие и шифруется ли канал.

Классика: adb tcpip и adb connect:

Работает на любом Android начиная с 4.x, root не нужен, но для первого включения обязателен USB-кабель.

Шаг 1. Подключаем устройство проводом и переводим adbd в TCP-режим:

Код: Выделить всё

$ adb tcpip 5555
restarting in TCP mode port: 5555
Команда перезапускает adbd, теперь он слушает порт 5555 на всех сетевых интерфейсах. 5555 это просто соглашение, можно указать любой свободный порт.

Шаг 2. Узнаём IP телефона в Wi-Fi сети:

Код: Выделить всё

$ adb shell ip addr show wlan0
24: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
    inet 192.168.1.42/24 brd 192.168.1.255 scope global wlan0
Можно и короче, через

Код: Выделить всё

adb shell ip route
, адрес будет в конце строки после src. Или просто в настройках Wi-Fi на самом телефоне.

Шаг 3. Отключаем кабель и подключаемся по сети:

Код: Выделить всё

$ adb connect 192.168.1.42:5555
connected to 192.168.1.42:5555

$ adb devices
List of devices attached
192.168.1.42:5555	device
Всё, работаете как обычно. Серийным номером устройства теперь служит пара ip:port, она же подставляется во флаг -s.

Минусы классики честно. Режим слетает после перезагрузки телефона: свойство

Код: Выделить всё

persist.adb.tcp.port
, которое делает его постоянным, доступно для записи только с root (глава 15), на обычной прошивке после ребута придётся снова брать кабель. И главное, порт 5555 открыт для всей локальной сети, причём трафик не шифруется. RSA-авторизация не даст чужому компьютеру выполнять команды без подтверждения на экране, но светить adbd в Wi-Fi кафе или коворкинга всё равно плохая идея, подробнее в главе 25.

Android 11+: беспроводная отладка с сопряжением:

Начиная с Android 11 кабель не нужен вообще. В меню разработчика появился пункт "Беспроводная отладка" (Wireless debugging). Включаете его, и устройство поднимает adbd поверх TLS на случайном порту. Никакого открытого 5555, канал шифруется, подключиться могут только сопряжённые компьютеры. Работает только в Wi-Fi сети, через мобильные данные тумблер не активируется.

На компьютере нужны platform-tools 30.0.0 или новее, в 2026 актуальны 35.x:

Код: Выделить всё

$ adb --version
Android Debug Bridge version 1.0.41
Version 35.0.2-12147458
Сопряжение по коду:

На телефоне внутри экрана беспроводной отладки жмёте "Подключение устройства с помощью кода" (Pair device with pairing code). Появится шестизначный код и адрес вида IP:порт. Этот порт нужен именно для сопряжения, он отличается от порта подключения на главном экране беспроводной отладки. На путанице двух портов спотыкаются почти все.

Код: Выделить всё

$ adb pair 192.168.1.42:37187
Enter pairing code: 482913
Successfully paired to 192.168.1.42:37187 [guid=adb-RF8M33KXXXX-Vbz0xJ]
Код можно передать сразу аргументом, удобно в скриптах:

Код: Выделить всё

$ adb pair 192.168.1.42:37187 482913
Уточнение по терминам: пароль (pairing code) принимает только

Код: Выделить всё

adb pair
. У

Код: Выделить всё

adb connect
никакого пароля нет и не было, доверие уже установлено сопряжением. Подключаемся к порту с главного экрана беспроводной отладки, он другой:

Код: Выделить всё

$ adb connect 192.168.1.42:42013
connected to 192.168.1.42:42013
Сопряжение по QR-коду:

QR-вариант делает то же самое, только код сканирует телефон. Чистый adb из командной строки QR не рисует, эта кнопка живёт в Android Studio: Device Manager > Pair Devices Using Wi-Fi > Pair using QR code. Студия показывает QR, телефон сканирует его кнопкой "Подключение с помощью QR-кода", сопряжение проходит автоматически. Под капотом тот же

Код: Выделить всё

adb pair
, просто адрес и код передаются через картинку.

Запоминание и mDNS:

Сопряжение это однократный обмен ключами. Компьютер сохраняется в списке "Сопряжённые устройства" на телефоне (там же его можно удалить), повторный

Код: Выделить всё

adb pair
после перезагрузки не нужен. Сопряжённые устройства adb умеет находить в сети сам, через mDNS:

Код: Выделить всё

$ adb mdns check
mdns daemon version [Openscreen discovery 0.0.0]

$ adb mdns services
List of discovered mdns services
adb-RF8M33KXXXX-Vbz0xJ	_adb-tls-connect._tcp	192.168.1.42:42013
Если беспроводная отладка включена и оба устройства в одной сети,

Код: Выделить всё

adb devices
часто показывает телефон вообще без ручного connect. Единственное неудобство: порт подключения меняется после каждого выключения тумблера или ребута, так что при ручном подключении актуальный ip:port каждый раз смотрите на экране беспроводной отладки.

Переключение проводной/беспроводной:

Вернуть adbd из классического TCP-режима обратно на USB:

Код: Выделить всё

$ adb usb
restarting in USB mode
Разорвать сетевые подключения со стороны компьютера:

Код: Выделить всё

$ adb disconnect 192.168.1.42:42013
disconnected 192.168.1.42:42013

$ adb disconnect
disconnected everything
Устройство может висеть в списке дважды, по проводу и по сети одновременно. Это два независимых транспорта:

Код: Выделить всё

$ adb devices -l
List of devices attached
RF8M33KXXXX            device usb:1-2 product:a52qnsxx model:SM_A525F transport_id:1
192.168.1.42:42013     device product:a52qnsxx model:SM_A525F transport_id:2
Любая команда без адресата в такой ситуации упадёт с ошибкой "more than one device/emulator". Выбирайте транспорт флагом -s по серийнику/адресу или -t по transport_id:

Код: Выделить всё

$ adb -s 192.168.1.42:42013 logcat -d -t 20
$ adb -t 1 shell getprop ro.product.model
На Android 11+ переключение тривиально: тумблер беспроводной отладки не мешает USB, можно воткнуть кабель для заливки тяжёлого APK (по проводу это в разы быстрее), а Wi-Fi соединение оставить для логов.

Устранение неполадок:

Connection refused. Вывод вида:

Код: Выделить всё

$ adb connect 192.168.1.42:5555
failed to connect to '192.168.1.42:5555': Connection refused
Значит, на порту никто не слушает: телефон перезагрузился и tcpip-режим слетел (повторите

Код: Выделить всё

adb tcpip 5555
по кабелю), либо на Android 11+ сменился порт, смотрите актуальный на экране.

Таймаут вместо refused. Пакеты не доходят до устройства. Типичные причины: компьютер и телефон в разных подсетях (на части роутеров диапазоны 2.4 и 5 ГГц изолированы друг от друга), включённый VPN на любой из сторон, файрвол. Проверяется netcat:

Код: Выделить всё

$ nc -vz 192.168.1.42 42013
nc: connectx to 192.168.1.42 port 42013 (tcp) failed: Operation timed out
Изоляция клиентов (AP isolation). Бич гостевых и публичных сетей: роутер запрещает трафик между клиентами, и никакой connect не пройдёт в принципе. Обход: поднять точку доступа на телефоне и подключить к ней ноутбук (или наоборот). Актуальный ip:port в новой сети экран беспроводной отладки покажет сам.

Ошибка при pair. Если

Код: Выделить всё

adb pair
отвечает "failed to pair" или protocol fault, в девяти случаях из десяти вы скормили ему порт подключения с главного экрана вместо порта из диалога с шестизначным кодом. Адрес берите строго из того окна, где показан код.

offline или unauthorized по сети. Сначала перезапуск сервера:

Код: Выделить всё

$ adb kill-server
$ adb start-server
Не помогло, тогда на телефоне "Отозвать доступ для отладки по USB", удалить компьютер из сопряжённых устройств и сопрячься заново.

Связь рвётся сама. Агрессивное энергосбережение режет Wi-Fi у спящего устройства, особенно на прошивках Xiaomi и Huawei. На время отладки посадите телефон на зарядку и включите "Не выключать экран" в меню разработчика (опция работает только при подключённом питании), плюс выведите систему из оптимизации батареи для Wi-Fi.

mDNS не находит устройства. Диагностика через

Код: Выделить всё

adb mdns check
. Свежие platform-tools используют встроенную реализацию Openscreen, старые сборки под Windows требовали установленного Bonjour. Реализацию можно переключить переменной окружения перед запуском сервера:

Код: Выделить всё

$ ADB_MDNS_OPENSCREEN=1 adb kill-server
$ adb start-server
На Windows дополнительно проверьте, что брандмауэр разрешает adb.exe входящие соединения в частных сетях, иначе ответы mDNS просто не дойдут.

Последнее про скорость: Wi-Fi всегда медленнее кабеля, и

Код: Выделить всё

adb install
двухсотмегабайтного билда по сети займёт ощутимо больше времени. Беспроводная отладка идеальна для логов, input-сценариев и тестов на держании в руках, а для конвейера прошивок провод никто не отменял. В следующей главе подключим к этому хозяйству эмуляторы, у них своя специфика транспорта.
👍2 ❤️3 🔥 😄 🤔
✔ Лучший ответ сформирован автоматически — adminvrpgunpg
android_roman писал(а):Этот порт нужен именно для сопряжения, он отличается от порта подключения на главном экране беспроводной отладки эх, где этот абзац был неделю назад. полчаса долбился adb pair в порт с главного экрана и ловил protocol fault. вопрос: а зафиксировать порт подключения на 11+ никак нельзя? задолбало после каждого ребута лезть в телефон и переписывать цифры
Перейти к ответу →
Аватара пользователя
adminvrpgunpg
Сообщения: 1
Зарегистрирован: 31 май 2026, 17:24

Re: Беспроводная отладка (Wi-Fi)

Сообщение adminvrpgunpg »

✔ Лучший ответ — сформирован автоматически
android_roman писал(а):Этот порт нужен именно для сопряжения, он отличается от порта подключения на главном экране беспроводной отладки
эх, где этот абзац был неделю назад. полчаса долбился adb pair в порт с главного экрана и ловил protocol fault. вопрос: а зафиксировать порт подключения на 11+ никак нельзя? задолбало после каждого ребута лезть в телефон и переписывать цифры
👍2 ❤️1 🔥 😄 🤔1
Аватара пользователя
Tungul
Сообщения: 1
Зарегистрирован: 28 май 2026, 15:50

Re: Беспроводная отладка (Wi-Fi)

Сообщение Tungul »

по поводу изоляции клиентов подтверждаю, в нашем офисе на гостевом wifi connect не проходил вообще, грешил на adb пока не прозвонил nc. поднял хотспот на самом телефоне, ноут к нему, и все взлетело с первого pair. и да, на винде еще брандмауэр молча резал mdns, пока не дал adb.exe доступ в частных сетях, до этого adb mdns services показывал пустой список
👍1 ❤️1 🔥 😄 🤔1
Аватара пользователя
janski
Сообщения: 1
Зарегистрирован: 14 май 2026, 00:13

Re: Беспроводная отладка (Wi-Fi)

Сообщение janski »

а если телефон рутованный, то setprop persist.adb.tcp.port 5555 реально переживает перезагрузку? у меня на lineage вроде работало, но хочу понять это фича lineage или на любом руте так
👍1 ❤️1 🔥1 😄 🤔
Аватара пользователя
jools2
Сообщения: 2
Зарегистрирован: 26 май 2026, 22:25

Re: Беспроводная отладка (Wi-Fi)

Сообщение jools2 »

у меня на пикселе с android 15 заметил что adb devices сам подцепляет телефон через mdns даже без connect, как в уроке и написано. но стоит телефону уйти в другую wifi сеть и вернуться, тумблер беспроводной отладки иногда сам выключается. это нормальное поведение или у меня прошивка чудит?
👍 ❤️ 🔥 😄 🤔
Ответить
← Предыдущая глава
Проброс портов и туннелирование
Следующая глава →
Взаимодействие с эмуляторами

Все главы курса «ADB: Android Debug Bridge»

Поделиться темой: ✈ Telegram VK
  • Похожие темы

Вернуться в «ADB: Android Debug Bridge»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость