Android Debug Bridge (adb) – основные команды
t.me/qa_chilloutAndroid Debug Bridge (adb) – инструмент командной строки, который позволяет взаимодействовать с устройством. Команда adb упрощает выполнение различных действий с устройством, например таких как установка и отладка приложений, и обеспечивает доступ к оболочке Unix, которую можно использовать для выполнения различных команд на устройстве. Это клиент-серверная программа, состоящая из трех компонентов:
- Клиент , отправляющий команды. Клиент работает на вашей машине разработки. Вы можете вызвать клиента из терминала командной строки, введя команду adb.
- Демон (adbd) , запускающий команды на устройстве. Демон работает в фоновом режиме на каждом устройстве.
- Сервер , который управляет обменом данными между клиентом и демоном. Сервер работает как фоновый процесс на вашей машине разработки.
Установка ADB
adb
входит в пакет Android SDK Platform-Tools. Скачать этот пакет можно с помощью SDK Manager , который устанавливает его в android_sdk/platform-tools/
. Или, если вам нужен автономный пакет Android SDK Platform-Tools, вы можете скачать его с официального сайта.
Запуск
Для работы с ADB понадобится:
1) устройство (эмулятор или физическое):
1.1 - устройство подключено по проводу, либо по Wi-Fi (см. статью как
1.2 - в настройках устройства «Для разработчика» разрешить отладку по USB.
2) запущенный терминал.
Справка по командам
Просмотр справки по командам доступен, если выполнить команду:
$ adb help
Список подключенных устройств
Просмотр списка устройств доступен, если выполнить команду:
$ adb devices
Как мы видим, сейчас подключено два устройства. Один эмулятор – emulator-5554 и физическое устройство – R58N85JTCGZ.
Список устройств с состоянием и описанием можно посмотреть, если выполнить команду:
$ adb devices -l
Взаимодействие с устройством
Работа с определенным устройством и просмотр состояния устройства
С помощью команды get-state вы можете узнать состояние устройства:
$ adb get-state
Однако, если выполнить эту команду – получим ошибку. Для того, чтобы работать с определенным устройством, необходимо указать нужное имя устройства с помощью опции -s:
$ adb -s emulator-5554 get-state
Команда get-state возвращает одно из значений:
- device — работает,
- bootloader — загружается,
- offline — выключено.
Перезагрузка устройства
Вам необходимо перезагрузить устройство, для этого можно воспользоваться одной из трех команд, в зависимости от целей:
$ adb reboot
– перезагрузка устройства;$ adb reboot recovery
– перезагрузка устройства в режиме восстановления (recovery);$ adb reboot bootloader
– перезагрузка устройства в режиме fastboot для дальнейшего выполнения fastboot-команд.
Работа с приложениями
Установка приложения
Установка приложения осуществляется с помощью команды adb install
, для этого необходимо указать путь до приложения:
С помощью команды:
$ adb install -f /path/some_name.apk
– можно выполнить установку приложения во внутреннюю память.
Удаление приложения
Удаление приложения осуществляется с помощью команды adb uninstall
, для этого необходимо указать Bundle ID приложения:
Переустановка приложения
Переустановка приложения осуществляется с помощью команды
– переустановка приложения с сохранением пользовательских данных:
$ adb install -r /path/some_name.apk
Информация о приложении
Команда adb shell dumpsys package com.app.example
– вывод информации о приложении:
Список установленных приложений
Список установленных приложений можно вывести с помощью команды:
:
$ adb shell pm list packages
Пермишены
Для работы с пермишенами существуют команды:
$ adb shell pm grant com.app.example android.permission.CAMERA
– выдача разрешения приложению на доступ к камере;$ adb shell pm revoke com.app.example android.permission.CAMERA
– блокировка доступа приложению к камере:
Логи устройства
При помощи этой команды можно вывести логи с устройства:$ adb logcat
Также можно вывести логи в файл:$ adb logcat > ~/Desktop/log.txt
В записях логов указаны приоритеты:
- V – verbose (это самый низкий приоритет);
- D – debug;
- I – info;
- W – warning;
- E – error;
- F – fatal;
- S – silent (это самый высокий приоритет).
Фильтровать сообщения по приоритету можно:
$ adb logcat '*:V'
Очистить кэш приложения
При тестировании часто приходится чистить кэш приложения, делается это с помощью команды:$ adb shell pm clear com.allgoritm.youla
Остановить все запущенные приложения
Убить все запущенные приложения можно командой:
$ adb shell am kill-all
Полезности при тестировании
Скриншот экрана
Довольно часто приходится делать скриншоты. С помощью команды$ adb shell screencap /path/file_name.png
можно сделать скриншот экрана:
где /path/file_name.png
– путь к файлу со скриншотом (куда его поместим на устройстве) и его имя (file_name.png)
Скриншот можно будет найти в галерее устройства.
Запись экрана
Запись видео возможно с помощью команды$ adb shell screenrecord /path/file_name.mp4
:
где /path/file_name.mp4
: – путь к файлу с видео (куда его поместим на устройстве) и его имя (file_name.mp4)
Отправка файлов на устройство
Для отправки файла на устройство можно воспользоваться командой:
$ adb push /local_path_on_pc /remote_path_on_device/file_name
:
Загрузка файлов с устройства
Для загрузки например скриншота с устройства можно воспользоваться командой:
$ adb pull /remote_path_on_device/file_name /local_path_on_pc
:
Эмуляция звонка c устройства
Совершить звонок на нужный номер телефона можно с помощью команды:
$ adb shell am start -a android.intent.action.CALL tel:79998887766
Открыть страницу в браузере
Открыть страницу в браузере можно с помощью команды:
$ adb shell am start -a android.intent.action.VIEW 'http://youla.ru'
Разблокировка устройства
С помощью следующей команды можно разблокировать телефон. Для этого необходимо ввести:
$ input keyevent 82
Погасит экран команда keyevent 26 (это нажатие кнопки Power). Можно изменить цифры:
- 3 — Home,
- 4 — Back,
- 24 — Volume Up,
- 25 — Volume Down,
- 27 — физическая кнопка Camera.
Отключить/включить WiFi
Включить передачу данных через мобильную сеть или управлять Wi-Fi можно с помощью команд:
$ adb shell svc data enable $ adb shell svc wifi disable $ adb shell svc wifi enable
Также можно заставить смартфон оставаться включенным при подключении к USB-порту/зарядке/Wi-Fi-сети или всегда:
$ adb shell svc power stayon usb $ adb shell svc power stayon ac $ adb shell svc power stayon wireless $ adb shell svc power stayon true
Заполнить поле текстом
Команда для вставки текста в текущее поле:
$ adb shell input text "some"
У команды input есть дополнительные опции:
$ adb shell input [<source>] <command> [<arg>…]
В качестве источника можно указывать trackball, joystick, touchnavigation, mouse, keyboard, gamepad, touchpad, dpad, stylus, touchscreen. В качестве команд будут:
- text (Default: touchscreen) [delay]
- keyevent [–longpress] … (Default: keyboard)
- tap (Default: touchscreen)
- swipe [duration(ms)] (Default: touchscreen)
- press (Default: trackball)
- roll (Default: trackball)
Батарейка в процентах
Батарейка в процентах выводится с помощью команды (Android 4.4 и выше):
$ adb shell content insert --uri content://settings/system --bind name:s:status_bar_show_battery_percent --bind value:i:1
Режим энергосбережения
Перевод смартфона в режим энергосбережения Doze (Android M+):
$ adb shell dumpsys battery unplug $ adb shell dumpsys deviceidle step
Бэкап приложений
В Android есть встроенные функции бэкапа, которые также можно запустить с помощью командной строки. Для этого используется команда adb backup
и набор опций:
$ adb backup [опции] <приложения>
- -f указывает имя создаваемого файла и его расположение на компе. При отсутствии ключа будет создан файл backup.ab в текущем каталоге;
- -apk|-noapk указывает, включать ли в бэкап только данные приложения или сам .apk тоже (по умолчанию не включает);
- -obb|-noobb указывает, включать ли в бэкап расширения .obb для приложений (по умолчанию не включает);
- -shared|-noshared указывает, включать ли в бэкап содержимое приложения на SD-карте (по умолчанию не включает);
- -all указывает на необходимость бэкапа всех установленных приложений;
- -system|-nosystem указывает, включать ли в бэкап системные приложения (по умолчанию включает).
Если мы хотим создать бэкап всех несистемных приложений, включая сами .apk, в определенное место, то команда будет выглядеть так:
$ adb backup -f ~/Documents/backup.ab -apk -all -nosystem
После ввода необходимо подтвердить начало выполнения бэкапа на самом устройстве.
Для восстановления полученного бэкапа нужно выполнить соответствующую команду:
$ adb restore ~/Documents/backup.ab
Резюме
Пользуйтесь командами, экономьте время и шарьте знания =)
Обсудить статью, узнать больше можно в телеграм канале «Тестировщики нужны».