Android Debug Bridge (ADB)
Last updated
Was this helpful?
Last updated
Was this helpful?
Отладочный мост Android - это универсальный инструмент командной строки, включенный в пакет Android SDK Platform-Tools, который позволяет вам взаимодействовать с устройством. Команда adb упрощает выполнение различных действий с устройством, таких как установка и отладка приложений, а также предоставляет доступ к оболочке Unix, которую можно использовать для выполнения различных команд на устройстве.
Если при тестировании приложения необходимо выполнить какую-нибудь необычную или сложную проверку связанную с состоянием устройства (например, установить определённый уровень заряда батареи), то с большой долей вероятности это можно сделать с помощью команд adb
или adb shell
.
Скачайте и установите Android SDK Platform-Tools на компьютер, это можно сделать через SDK Manager в Android Studio или скачав только Platform-Tools с официального сайта.
Чтобы начать работать с командами adb необходимо разрешить отладку по USB в настройках разработчика на телефоне. Где найти настройки разработчика смотрите в Android Developer Settings. Если вы работаете с эмулятором из android studio, то отладка по USB будет включено по умолчанию.
После того как настройка включена, подключите компьютер к телефону кабелем. Если сервер adb запущен на компьютере, то на телефоне высветиться диалоговое окно предлагающее разрешить отладку с этого компьютера. Если сервер adb не запущен он запуститься при вызове первой adb команды в командной строке или терминале.
Отладку можно также подключить через WiFi, как это сделать можно прочитать тут.
Команды adb выполняются в командной строке или терминале системы. Если при вводе команды пишет, что adb не найден проверьте, что путь до него прописан в переменных окружения (или среды) или пропишите полный путь до adb, либо запустите терминал из директории с программой.
adb devices
Команда adb devices
позволяет вывести список устройств подключенных в данный момент к компьютеру (по USB или сети). При выполнении команды будет показан список устройств с серийным номером (или уникальным именем) и статусом подключения. Для получения расширенной информации, такой как модель устройства, можно использовать флаг -l
.
Команду полезно использовать, чтобы выполнять команды adb, когда к компьютеру подключено несколько устройств. После того как узнали серийный номер нужного устройства его можно использовать для всех команд adb используя флаг -s SERIAL_NUMBER
сразу после adb. Пример:
Если вы подключили устройство, но окно для разрешения отладки не показывается и при вызове adb devices
вы видите, что устройство unauthorized
, то попробуйте в настройках для разработчиков отозвать разрешение на отладку и вернуть.
adb install
Команда установки позволяет установить приложение с компьютера напрямую на устройство. Синтаксис прост: adb install <путь_до_apk_файла>
. Если старая версия приложения уже установлена, то используется флаг -r
, чтобы разрешить перезапись. Для дебаг сборок можно также использовать флаг -d
, он позволяет ставить более старую версию поверх установленной свежей. При использовании флага -d
будьте внимательны так как даунгрейд может привести с неожиданным проблемам при неправильной миграции данных.
adb install -r -d example.apk
adb push
и adb pull
Для отправки файла на устройство можно использовать команду adb push <путь_файла_на_компьютере> <путь_куда_сохранить_на_устройстве>
.
Для скачивания файла с устройства используйте adb pull <путь_файла_на_устройстве> <путь_куда_сохранить_на_компьютере>
.
adb shell
Если просто выполнить adb shell
, то мы напрямую попадём в командную строку android, где можно выполнять множество команд связанных с android. Однако в большинстве случаев удобнее пользоваться конструкцией adb shell <команда_оболочки>
такой синтаксис позволяет после исполнения команды вернуться в командную строку системы вашего ПК, а также возвращать сохранять выходные данные на сразу на компьютер, например, при использовании adb shell logcat
.
adb logcat
или adb shell logcat
Утилита logcat позволяет в реальном времени собирать и смотреть логи приложений. Для визуального чтения в реальном времени удобнее использовать графический вариант в Android Studio, однако утилита командной строки имеет ряд уникальных возможностей, которые могут быть удобны при тестировании. Подробнее можно прочитать в официальной документации. Здесь приведу одно из кейсов, когда использование adb logcat незаменимо.
Если при тестировании приложения Android Studio было закрыто или телефон не подключен к компьютеру и вы поймали краш или другой баг, то вы всё ещё можете получить последние логи за небольшой промежуток времени, для этого выполните команду:
В зависимости от того, что вы ввели в файл будут записаны последние записи сохранившиеся в logcat. Можно ввести дату в формате YYYY-MM-DDTHH:MM:SS
, время: HH:MM:SS
или просто количество строк. Пример:
adb shell screencap
и adb shell screenrecord
В большинстве случаев запись экрана удобнее проводить из Android Studio или с самого устройства, но при необходимости (или например если вы разрабатываете свою утилиту) можно сделать это через команды оболочки. Для скриншота выполните: adb shell screencap <путь_на_устройстве>
, для записи экрана: adb shell screenrecor <путь_на_устройстве>
. Далее для скачивания файла на компьютер можно использовать adb pull
. Для записи экрана можно также установить параметры такие как разрешение, битрейт и другие, подробнее тут.
Shell обладает огромным набором возможностей, например, как установка своего значения батареи с помощью adb shell dumpsys battery set level X
или запуск определённого intent вашего или другого приложения, например совершить звонок: adb shell am start -a android.intent.action.CALL tel:79998887766
, и множество других возможностей, поэтому рекомендую обязательно гуглить можно ли что-то сделать с помощью adb, если вы столкнулись со сложным кейсом.
adb emu
При тестировании с использованием эмуляторов можно облегчить свою жизнь при тестировании кейсов связанных с эмуляцией входящих смс, звонков или если понадобится эмуляция физических датчиков, таких как gps, акселерометр или гироскоп. Например можно тестировать работу системы автоматической постановки кода из смс, не отправляя реальные смс.
Примеры:
Входящее смс от номера – adb emu sms send <номер или имя> <сообщение>
Входящий звонок – adb emu gsm call <номер>
Установка геопозиции – adb emu geo fix -122.084 37.422
Поворот устройства – adb emu rotate
Подробнее про команды для эмулятора в официальной документации. Там по какой-то причине рассказывается только про подключение к консоли эмулятора через telnet, однако синтаксис выше (adb emu <команда>
) также отлично работает.
adb очень мощный инструмент, который можно использовать в разных областях тестирования, от быстрой установки приложения без перекидывания на телефон, до выполнения сложных предварительных настроек устройства при запуске автотестов.
Иногда выполнение консольных команд не совсем удобно и хочется иметь те же возможности, но в более удобном формате. Например, просто перетащить файл и чтобы он установился или перекинулся на устройство. В таких случаях вы запросто можете использовать adb в своих проектах, написав собственные утилиты для работы с adb.
Даже не умея программировать можно использовать Shorcuts на mac или Power Automate, чтобы создать себе быструю команду, которая будет в два клика отправлять пачку файлов на устройство или устанавливать приложение сразу на несколько устройств. Здесь можно найти пример как такое сделать на macOS и сами команды для Shortcuts, которые существенно ускорят вашу работу.
Источники:
Дополнительно: