ANDROID DEBUG BRIDGE
Android Debug Bridge (adb) – универсальный инструмент командной строки, который позволит Вам взаимодействовать с экземпляром эмулятора или подключёнными Android-устройствами. Это клиент-серверная программа, состоящая их трех компонентов:
- Клиент, который работает на Вашем хосте разработки (компьютере разработчика). Вы можете вызвать клиента из командной строки, используя команду adb. Другие инструменты Android, такие как DDMS и плагин ADT, также создают клиентов adb.
- Сервер, который запущен как фоновый процесс на хосте разработки. Сервер управляет обменом данными между клиентом и adb-демоном, работающем на эмуляторе или устройстве.
- Демон, который запущен как фоновый процесс на каждом экземпляре эмулятора или устройства.
Утилиту adb Вы можете найти в <sdk>/platform-tools/.
При запуске adb-клиента, клиент сначала проверяет, запущен ли процесс сервера adb. Если нет, то он запускает процесс сервера. Когда стартует сервер, он запускает прослушивание локального порта TCP 5037 и считывает с него поступающие команды от adb-клиентов — все клиенты adb используют порт 5037 для обмена данными с сервером adb.
Затем сервер устанавливает соединения со всеми запущенными экземплярами эмуляторов/устройств. Он находит эмуляторы и устройства путем сканирования нечетных портов в диапазоне 5555…5585, диапазон, используемый эмуляторами/устройствами. Когда сервер находит демона adb, он устанавливает с ним соединение по этому порту. Имейте в виду, что каждый экземпляр эмулятора/устройства занимает пару последовательных портов — четный номер порта для подключения консоли и нечетный номер порта для adb-соединений. Например:
Emulator 1, console: 5554 Emulator 1, adb: 5555 Emulator 2, console: 5556 Emulator 2, adb: 5557 и так далее ...
Как здесь показано, экземпляр эмулятора, подключенного к adb через порт 5555 тот же самый, что прослушивает порт консоли 5554.
Как только сервер установил соединения со всеми экземплярами эмуляторов, Вы можете использовать команды adb для получения доступа к этим экземплярам. Поскольку сервер управляет соединениями с экземплярами эмуляторов/устройств и обрабатывает команды от множества клиентов adb, Вы можете управлять любым эмулятором/устройством от любого клиента (или из скрипта).
Включение отладки ADB
Для использования adb с устройством, подключённым по USB, Вам необходимо включить отладку по USB в настройках системы устройства, в разделе «Для разработчиков».
На Android 4.2 и выше окно «Для разработчиков» скрыто по умолчанию. Для того, чтобы сделать его видимым, перейдите в Настройки -> Об устройстве и нажмите на номер версии семь раз. Вернитесь к предыдущему экрану, чтобы найти «Для разработчиков» внизу.
На некоторых устройствах окно «Для разработчиков» может быть расположено или называться иначе.
Примечание: когда Вы подключаете устройство, которое работает на Android 4.2.2 и выше, к Вашему компьютеру, система покажет диалог, запрашивающий подтвердить ключ RSA, который позволит отлаживать Android-программы через этот компьютер. Этот механизм безопасности защищает устройство пользователя, потому что он гарантирует, что отладка через USB и другие команды adb не могут быть выполнены, пока Вы явно не разблокируете устройство, выбрав подтверждение в этом диалоге. Для поддержки этой возможности требуется adb версии 1.0.31 (доступно в SDK Platform-tools r16.0.1 и выше) для отладки на устройстве, работающем на Android 4.2.2 и выше.
Подключение к приставке с помощью ADB на ПК Windows
Для того чтобы установить соединение между приставкой и ПК, необходимо:
- Открыть командную строку на ПК (путём нажатия Windows + R)
- Запустить команду cmd
- Перетащить adb.exe в консоль и нажмите Enter
- Подключить adb-хост к устройству:
adb connect #.#.#.# connected to #.#.#.#:5555
Если adb-соединение постоянно теряется:
- Убедитесь, что Ваш хост остаётся подключённым у к той же сети, что и приставка.
- Повторно подключитесь
- Если это не сработает, перезагрузите Ваш adb-хост и попробуйте ещё раз сначала:
adb kill-server
Синтаксис
Вы можете вызвать команды adb из командной строки хоста разработки или из скрипта. Общий вид команды adb следующий:
adb [-d|-e|-s <serialNumber>] <command>
Если на хосте разработки работает только один эмулятор или подключено только одно устройство, то команда adb подключится к нему по умолчанию. Если работает несколько эмуляторов или подключено несколько устройств, то нужно указывать опции -d, -e или -s, чтобы указать целевое устройство для подключения - кому предназначена команда.
Команды
В таблице ниже перечислены все поддерживаемые команды adb, а также объясняется их назначение и использование.
Категория |
Команда |
Описание |
Комментарии |
---|---|---|---|
Target device (целевое устройство) |
-d |
Направляет команду adb на любое подключенное (не эмулятор) через USB устройство. |
Возвращает ошибку, если подключено больше одного USB устройства. |
Target device (целевое устройство) |
-e |
Направляет команду adb на любой запущенный экземпляр эмулятора. |
Возвращает ошибку, если запущено больше одного экземпляра эмулятора. |
Target device (целевое устройство) |
-s <serialNumber> |
Направляет команду adb на специально указанный экземпляр эмулятора/устройства по его серийному номеру |
См. раздел "Направление команд на определенно заданный экземпляр эмулятора/устройства" |
General (общие команды) |
devices |
Выводит список всех подключенных экземпляров эмуляторов/устройств. |
См. раздел "Опрос имеющихся эмуляторов/устройств". |
General (общие команды) |
help |
Выводит список всех поддерживаемых команд adb. |
|
General (общие команды) |
version |
Выводит номер версии adb. |
|
Debug (отладка) |
logcat [option] [filter-specs] |
Выводит данные лога на экран. |
|
Debug (отладка) |
bugreport |
Выводит данные dumpsys, dumpstate и logcat на экран (предназначено для сообщений об ошибках разработчикам). |
|
Debug (отладка) |
jdwp |
Выводит список доступных процессов JDWP на указанном устройстве. |
Вы можете использовать спецификацию перенаправления портов forward jdwp: < pid > для подключения к определенному процессу JDWP |
Data (работа с файлами) |
install <path-to-apk> |
Проталкивает приложение Android (нужно указать полный путь к файлу .apk на хосте отладки) на эмулятор/устройство. |
|
Data (работа с файлами) |
pull <remote> <local> |
Копирует указанный файл с эмулятора/устройства на хост отладки. |
|
Data (работа с файлами) |
push <local> <remote> |
Копирует указанный файл с хоста отладки на эмулятор/устройство. |
|
Ports and Networking (порты и сетевые содеинения) |
forward <local> <remote> |
Перенаправляет соединения сокета с указанного локального порта (local) в указанный удаленный порт (remote) на экземпляре эмулятора/устройства. |
Спецификация порта может использовать следующие схемы: |
Ports and Networking (порты и сетевые содеинения) |
ppp <tty> [parm]… |
Запускает PPP поверх USB, <tty> — tty для PPP потока |
Примечание: Обратите внимание, что Вы не должны автоматически запускать PPP-соединение |
Scripting (скрипты) |
get-serialno |
Выводит строку серийного номера экземпляра adb. |
См. раздел "Опрос имеющихся эмуляторов/устройств" |
Scripting (скрипты) |
get-state |
Выводит состояние adb на экземпляре эмулятора/устройства. |
|
Scripting (скрипты) |
wait-for-device |
Блокирует выполнение, пока устройство не будет готовым (не перейдет в online) - т. е., пока состояние не станет device. |
|
Server (управление сервером) |
start-server |
Проверяет, запущен ли процесс сервера adb и запускает его, если процесс сервера не запущен. |
|
Server (управление сервером) |
kill-server |
Прерывает работу процесса сервера adb |
|
Shell (командная строка) |
shell |
Запускает remote shell (доступ к командной строке) на экземпляре эмулятора/устройства. |
См. раздел "Выдача команд Shell". |
Shell (командная строка) |
shell [shellCommand] |
Выдает команду шелла на экземпляре эмулятора/устройства, и сразу производит выход из шелла. |
См. раздел "Выдача команд Shell". |
Более детальную информацию Вы можете найти на официальном веб-сайте Android Debug bridge