adb: обзор функций и вариантов подключения к устройству Печать
Добавил(а) microsin   

ADB (Android Debug Bridge) — это универсальный инструмент, который используется не только для отладки приложений, но и для решения множества повседневных задач: от установки программ и удаления системного мусора до управления файлами и записи экрана. Это работает на всех популярных операционных системах

Вот список основных вариантов использования ADB, разделенный по категориям.

Управление приложениями. С помощью ADB можно устанавливать, удалять и управлять приложениями в обход стандартных ограничений системы.

• Установка приложений (Sideloading): вы можете устанавливать APK-файлы напрямую с компьютера (например, хоста разработки), что полезно для приложений, которых нет в Google Play, или для тестирования сборок. Команда: `adb install path_to_apk`.
• Удаление приложений: можно удалять не только пользовательские, но и встроенные (bloatware) приложения, которые нельзя удалить обычным способом. Это делается через команду `pm uninstall` в оболочке `adb shell`.
• Управление пакетами: просмотр списка установленных пакетов и выполнение других операций через `adb shell pm`.

Работа с файлами. ADB позволяет передавать файлы между компьютером и устройством.

• Копирование с устройства: вы можете скачать фотографии, скриншоты или любые другие файлы на компьютер командой `adb pull`.
• Копирование на устройство: можно загрузить файлы на телефон или планшет командой `adb push`.

Выполнение команд и доступ к системе. ADB дает прямой доступ к командной оболочке Android.

• Выполнение shell-команд: вы можете запускать любые команды, доступные в Android (например, `ls`, `cd`, `mkdir`), или использовать специфические команды системы.
• Запись экрана и скриншоты: ADB позволяет запускать запись экрана или делать снимки экрана напрямую, без использования сторонних приложений.
• Просмотр логов: команда `adb logcat` используется для вывода системных логов Android, что незаменимо при отладке приложений или поиске причин сбоев.

Отладка и разработка. Это исходное предназначение инструментария adb.

• Отладка приложений: hазработчики используют ADB для установки отладочных сборок, чтения логов и взаимодействия с приложением через консоль.
• Порт-форвардинг: проброс TCP-портов с компьютера на устройство (и наоборот) для тестирования сетевых функций приложений.

Полезные мелочи:

• Управление подключением: вы можете подключать устройства по USB или Wi-Fi, а также управлять несколькими устройствами одновременно, выбирая нужное устройство для команд.
• Перезагрузка в особые режимы: с помощью ADB можно перезагрузить устройство в режим recovery или bootloader для продвинутых манипуляций с системой.

[Как подключиться к adb]

Подключение к устройству Android через ADB (Android Debug Bridge) возможно двумя основными способами: по USB и по Wi-Fi. Первый вариант является классическим и наиболее надёжным, второй — более удобным, но требует выполнения дополнительных условий (например, нахождения в одной сети). Ниже приведен краткий обзор вариантов подключения к устройству Android - через USB или Wi-Fi.

Подключение через USB. Это базовый метод, который чаще всего используется для первичной настройки и отладки. Он требует физического подключения кабеля и включения соответствующего режима на устройстве.

Процедура подключения:

1. Включите отладку по USB на устройстве: зайдите в «Настройки» → «О телефоне» (или «Система») → несколько раз нажмите на «Номер сборки», чтобы активировать режим «Для разработчиков». Затем в появившемся меню «Для разработчиков» включите переключатель «Отладка по USB».

2. Подключите устройство: соедините телефон и компьютер кабелем USB. На экране устройства появится запрос на разрешение отладки с компьютера. Нажмите «Разрешить» (рекомендуется поставить галочку «Всегда разрешать с этого компьютера»).

3. Настройте компьютер (при необходимости):

   - Windows: может потребоваться установка OEM-драйвера USB для вашего устройства.
   - Ubuntu Linux: необходимо добавить пользователя в группу `plugdev` и установить пакет `android-sdk-platform-tools-common` для получения правил udev.

4. Проверьте подключение: откройте терминал (или командную строку) в папке `platform-tools` и выполните команду `adb devices`. В списке должно появиться серийный номер вашего устройства со статусом `device`.

Подключение через Wi-Fi. Этот метод избавляет от необходимости использовать кабель, но требует, чтобы компьютер и телефон находились в одной сети Wi-Fi. Существует два подхода: классический (через USB для активации) и современный (прямое сопряжение).

Вариант А: классический (требуется USB на первом этапе). Этот способ работает на большинстве версий Android, но требует однократного подключения по USB для перевода ADB в сетевой режим.

1. Выполните шаги 1–3 из инструкции для USB (включите отладку и подключите кабель).
2. В терминале выполните команду `adb tcpip 5555`. Это перезапустит демон ADB на устройстве в режиме прослушивания TCP-порта.
3. Узнайте IP-адрес устройства (например, в настройках Wi-Fi или командой `adb shell ip route`).
4. Отключите USB-кабель и выполните команду `adb connect IP-адрес:5555` (например, `adb connect 192.168.1.42:5555`).
5. Проверьте подключение командой `adb devices`.

Вариант Б: современный (прямое сопряжение, Android 11+). Начиная с Android 11 появилась возможность беспроводного сопряжения без предварительного подключения по USB (ADB Wi-Fi). Это безопасный метод с использованием TLS.

1. Включите «Беспроводную отладку»: на устройстве в меню «Для разработчиков» включите переключатель «Беспроводная отладка» (Wireless debugging).

2. Сопряжение: в меню беспроводной отладки выберите «Сопряжение устройства с помощью кода» (или QR-кода).

- Через код: на компьютере выполните в терминале `adb pair IP:Порт Код`. IP и порт, а также шестизначный код отображаются на экране телефона в диалоге сопряжения.
- Через QR-код: нажмите на телефоне «Pair using Wi-Fi» и отсканируйте QR-код камерой телефона.

3. Подключение: после успешного сопряжения выполните команду `adb connect IP:Порт`, где IP и порт берутся с главного экрана меню «Беспроводная отладка» (порт будет отличаться от порта сопряжения).

Стандартная консольная команда adb сама по себе не имеет встроенной функции для генерации QR-кода. Для этого используются сторонние утилиты с открытым исходным кодом, которые генерируют QR-код в терминале и автоматически выполняют сопряжение.

Вот несколько популярных инструментов и соответствующие команды для запуска:

1. adb-wifi-qr (Python). Самый распространённый вариант. Генерирует QR-код и автоматически запускает `adb pair` после сканирования телефоном.

Установка: `pip install adb-wifi-qr`
Команда запуска: `adb-wifi-qr`
С автоподключением: `adb-wifi-qr --connect` (сразу выполнит `adb connect` после сопряжения).

2. adb-wireless (Rust). Лаконичный инструмент, написанный на Rust.

Установка: `cargo install adb-wireless`
Команда запуска: `adb-wireless pair`

3. adbqr (Bash-скрипт). Легковесный вариант для macOS/Linux. Требует установленного `qrencode`.

Установка: `brew install kristjan/tap/adbqr` (или через `install.sh`)
Команда запуска: `adbqr`

4. Варианты для Node.js (npx). Если не хотите ничего устанавливать глобально, можно запустить через `npx`.

`adb-qr`: `npx adb-qr qr`
`adb-qr-cli`: `npx adb-qr-cli qr`

Все эти инструменты работают по одному принципу: они генерируют QR-код в формате `WIFI:T:ADB;S:< name>;P:< password>;;`. Вам нужно открыть на телефоне «Настройки» → «Для разработчиков» → «Беспроводная отладка» → «Сопряжение с помощью QR-кода» и отсканировать код, появившийся в терминале.

Если вы работаете в среде WSL2 или Docker, где mDNS (обнаружение устройств в локальной сети) может не работать, обратите внимание на инструмент `adb-qr` — он умеет использовать adb-сервер хоста (Windows) для поиска устройства, что решает проблему с сетевой изоляцией.

Важные замечания:

Безопасность: классический метод `adb tcpip` передаёт данные по сети в незашифрованном виде, поэтому его не рекомендуется использовать в общедоступных сетях. Современный метод (ADB Wi-Fi) использует шифрование TLS и является предпочтительным.
Отладка по Wi-Fi 2.0: в новых версиях Android (например, Android 17) и инструментов SDK процесс был ещё больше упрощён и оптимизирован, однако базовый принцип сопряжения остаётся схожим.

[Решение возможных проблем]

Телефон подключен через USB, компьютер видит телефон как «MTP USB Device», но команда adb devices отображает пустой список. Это означает, что соединение для передачи файлов установлено, но не ADB распознал устройство. Вероятно проблема на уровне драйверов или авторизации — Windows использует драйвер MTP для телефона, а не драйвер ADB-интерфейса.

Решения (в порядке приоритета):

1. Проверьте наличие неизвестных устройств в Диспетчере Устройств

Найдите в разделе «Другие устройства» Диспетчера Устройств (или в разделе «Портативные устройства») запись, связанную с вашим устройством или `ADB Interface`:

- Если рядом желтый восклицательный знак — это означает, что драйвер ADB не установлен или не загрузился.
- Если отображается как «MTP USB Device» без восклицательного знака — это означает, что Windows использует универсальный драйвер MTP, и ADB-интерфейс не активирован.

2. Установите специальный драйвер ADB для вашего устройства. Например, модели смартфона BQ-5765L в сети доступны ADB/Fastboot-драйверы. Скачайте их и установите, затем в «Диспетчере устройств» найдите устройство с восклицательным знаком, нажмите правой кнопкой мыши → «Обновить драйвер» → «Выполнить поиск драйверов на этом компьютере» → укажите папку с только что скачанным драйвером.

Примечание: драйвер можно скачать со специализированного сайта драйверов (например, androidadbdriver.com или androidusbdrivers.com). Для телефона BQ 5765L Clever я нашел пакет драйверов usb_driver_r13-windows.zip на сайте gsmusbdriver.com.

Если при установке появится сообщение об ошибке подписи драйвера, необходимо временно отключить обязательную проверку подписи драйверов Windows (обычно через «Дополнительные параметры загрузки» → «Отключить обязательную проверку подписи драйверов» после перезагрузки) и затем установить.

3. Перезапустите службу ADB и повторно подключите устройство. В командной строке выполните:

adb kill-server
adb start-server
adb devices

Затем отключите и снова подключите USB-кабель. При повторном подключении разблокируйте экран телефона и следите, появится ли диалоговое окно «Разрешить отладку по USB» — если появится, обязательно установите флажок «Всегда разрешать» и нажмите «Разрешить».

4. Отзовите авторизации и подключите заново. В «Параметрах разработчика» телефона нажмите «Отозвать авторизации отладки по USB», затем отключите и снова подключите кабель, чтобы принудительно запустить новую авторизацию.

Если все вышеперечисленное не помогло. Попробуйте заменить USB-кабель (некоторые кабели поддерживают только зарядку и MTP, но не передачу данных ADB), или подключите кабель к USB-порту на задней панели системного блока (порты на передней панели могут выдавать недостаточное питание для телефона). Также можно попробовать установить на телефон приложение типа «USB Driver for Android», чтобы помочь компьютеру распознать ADB-интерфейс.

Установил драйвер Android ADB Interface, но система показала окно с сообщением: "Программное обеспечение для этого устройства установлено, но оно может не работать корректно. Это устройство не может запуститься. (Код 10)".

Ошибка «Код 10» означает, что Windows обнаружила устройство, но не смогла успешно загрузить драйвер для запуска этого оборудования. Обычно это связано с тем, что скачанный вами драйвер не имеет действительной цифровой подписи, или с тем, что драйвер не полностью совместим с оборудованием ADB вашего телефона BQ.

Наиболее вероятная причина — блокировка обязательной проверкой подписи драйверов Windows. Скачанный вами с сайта драйверов для файл `.inf`, скорее всего, не подписан официально Microsoft, поэтому Windows 11 отказывается загружать его.

Решение: отключите проверку подписи и переустановите драйвер

1. Временно отключите обязательную проверку подписи драйверов. Это необходимое условие для установки неофициальных драйверов.

- Зажмите клавишу Shift и выберите «Перезагрузить» в меню «Пуск».
- После перезагрузки выберите «Поиск и устранение неисправностей» -> «Дополнительные параметры» -> «Параметры загрузки» -> «Перезагрузить».
- После перезагрузки нажмите клавишу `7` или `F7`, чтобы выбрать «Отключить обязательную проверку подписи драйверов».

2. Замените драйвер на официальный универсальный от Google (более надёжный способ). Драйвер для который вы скачали, может быть устаревшим или несовместимым. Попробуйте переключиться на универсальный драйвер `android_winusb.inf`, встроенный в Android SDK Platform-Tools — он имеет лучшую совместимость и не зависит от конкретной модели.

- Перейдите в папку `platform-tools`, которую вы установили через winget ранее (путь указан в вашем выводе `adb version`), проверьте, есть ли там подпапка `usb_driver`. Если нет, скачайте отдельно «Google USB Driver» с официального сайта Android и распакуйте.
- В «Диспетчере устройств» щёлкните правой кнопкой мыши на устройстве с жёлтым восклицательным знаком, выберите «Обновить драйвер» -> «Выполнить поиск драйверов на этом компьютере» -> «Выбрать драйвер из списка доступных драйверов на компьютере».
- Нажмите «Установить с диска» -> «Обзор», перейдите в папку `usb_driver` и выберите файл `android_winusb.inf`.
- В списке моделей выберите «Android ADB Interface» (или `Android Composite ADB Interface`), нажмите «Далее» и установите. Если появится предупреждение о подписи, выберите «Всё равно установить».

3. Попробуйте другой USB-порт или кабель. Если после описанных выше действий ошибка сохраняется, попробуйте заменить кабель или переключитесь на USB-порт 2.0 на задней панели компьютера. Некоторые порты USB 3.0 могут иметь проблемы совместимости с драйверами ADB старых устройств.

[Ссылки]

1. Android Debug Bridge - что это такое?
2. man adb.
3. Отладка разрабатываемого приложения Android.