ADB (Android Debug Bridge) – консольная клиент-серверная программа, выполняет роль универсального интерфейса для управления Android-устройствами (или их эмуляторами).
Через ADB программы на компьютере можно взаимодействовать с телефоном или планшетом, например для синхронизации контактов, бэкапов данных или удаленного доступа к устройству.
Однако главное назначение ADB – это отладка приложений и сервисов при их разработке и тестировании. В этом случае взаимодействие с устройством осуществляется через консоль.
Возможности ADB:
- просмотр подключенных устройств;
- просмотр логов;
- копирование файлов;
- установка и удаление приложений;
- скриншоты (и запись видео) экрана устройства;
- удаление и перепрошивка раздела data;
- запуск различных скриптов;
- управление сетевыми параметрами.
В состав ADB входит три компонента:
- клиент, который запускается на компьютере и отправляет команды. Его можно вызвать его из командной строки, введя команду adb;
- демон, который запускается как фоновый процесс на Android-устройстве и выполняет команды клиента;
- сервер, который работает в фоне на компьютере и управляет клиентом и демоном.
Как работает ADB:
- при запуске adb-клиент проверяет наличие запущенного процесса adb-сервера, и если нет – запускает его на компьютере;
- сервер устанавливает соединение на порту 5037 и слушает на нем команды от adb- клиентов;
- затем сервер устанавливает соединения со всеми работающими устройствами, сканируя нечетные порты в диапазоне от 5555 до 5585. Для каждого устройства используется пара последовательных портов – порт с четным номером для соединений консоли, порт с нечетным номером – для соединений adb;
- после того как сервер настроил соединения с устройствами, можно использовать команды adb для доступа к ним.
Подготовка к использованию
Прежде чем начать отладку на устройстве, необходимо выполнить несколько действий:
- установить ADB на компьютере (драйвер для вашего Android-устройства, а так же пакет Android SDK Platform Tools);
- на Android-устройстве включить отладку по USB, а затем подключить его к компьютеру кабелем (или настроить отладку по Wi-Fi).
Установка ADB
На устройствах под управлением Windows, установите драйвер для вашего Android-устройства.
Драйвера для устройств Google
OEM USB драйвера сторонних производителей
Если драйвера для вашего устройства не нашлось на указанных страницах, попробуйте поискать его на сайте производителя.
Для MacOS и Linux установка драйверов не требуется.
Далее потребуется установить Android SDK Platform Tools. Если вы используете Android Studio, скорее всего SDK Platform Tools у вас уже установлен.
Установка ADB в Windows
Скачайте SDK Platform Tools и распакуйте папку platform-tools на диск (рекомендуется в С:\platform-tools).
В системную переменную Path добавьте путь к распакованной папке, для этого:
- перейдите в Панель управления – Система и безопасность – Система;
- выберите пункт Дополнительные параметры системы;
- нажмите кнопку Переменные среды;
- в поле Системные переменные выберите значение Path и нажмите кнопку Изменить, чтобы добавить новое значение;
- укажите путь к папке platform-tools содержащую adb;
- перезагрузите компьютер.
Установка ADB в Linux
Чтобы установить SDK Platform Tools в Ubuntu выполните следующую команду.
apt-get install adb
или
sudo apt-get install android-tools-adb
Либо вручную скачать SDK Platform Tools, распаковать на диск и добавить путь к распакованной папке с platform-tools в переменную среды $PATH.
Установка ADB в MacOS
Самый простой способ установить SDK Platform Tools на MacOS, используя Homebrew.
brew cask install android-platform-tools
Либо установить вручную.
Сперва удалите предыдущую версию android-platform-tools, если такая имеется.
rm -rf ~/.android-sdk-macosx/
Затем скачайте SDK Platform Tools.
Перейдите в папку с загрузками, распакуйте скачанный архив и переместите файлы программы в удобное для вас место, например в домашнюю директорию.
cd ~/Downloads/ unzip platform-tools_*.zip mkdir ~/.android-sdk-macosx mv platform-tools/ ~/.android-sdk-macosx/platform-tools
Добавить путь к platform-tools в переменную среды $PATH.
echo 'export PATH=$PATH:~/.android-sdk-macosx/platform-tools/' >> ~/.bash_profile
Обновите bash профиль или перезапустите терминал.
source ~/.bash_profile
Проверка ADB
Зайдите в консоль и введите следующую команду:
adb version
Если все сделали верно, в ответ в консоль будет выведена информация о версии ADB.
Как включить отладку по USB на Android
Отладка по USB включается в настройках системы в разделе Параметры разработчика.
На Android 4.2 и выше раздел параметров разработчика по умолчанию скрыт. Чтобы сделать его видимым, перейдите в Настройки – О телефоне и нажмите Номер сборки (в редких случаях Номер модели) 7 раз (в редких случаях 10). На экране отобразится уведомление «Теперь вы разработчик!«
В настройках должен появиться пункт меню Параметры разработчика, найдите в нем пункт Отладка USB и активируйте его.
На некоторых устройствах раздел с параметрами разработчика может располагаться в других разделах настроек или иметь другое название.
Подробнее о параметрах разработчика на устройствах Android можно ознакомится на developer.android.com.
Отладка Android по Wi-Fi
Для начала разрешите на Android устройстве отладку по USB, как описано в предыдущем разделе.
Устройство и компьютер должны быть в одной Wi-Fi сети. Убедитесь, что ваш брандмауэр или антивирусное не блокирует adb соединения.
Подключите устройство к компьютеру с помощью USB кабеля.
Разрешите устройству принимать соединения TCP/IP через порт 5555. Для этого выполните в командной строке следующую команду.
adb -d tcpip 5555
Параметр -d отправит команду только на устройство подключенное через USB.
В ответ должно появиться сообщение restarting in TCP mode port: 5555.
Если подключенных устройств несколько, возможно придется дополнительно указать серийный номер устройства.
adb -s 9A301FFAZ00DQT tcpip 5555
Узнать серийный номер и получить информацию о подключенных устройствах можно следующей командой.
adb devices -l
После того, как разрешите устройству принимать соединения TCP/IP через порт 5555, отсоедините кабель USB от компьютера.
Далее понадобится узнать ip-адрес вашего Android-устройства.
Например, для устройств Nexus, ip-адрес можно посмотреть в разделе Настройки — О телефоне (О планшете) – Статус – IP-адрес. Иногда ip-адрес указан в настройках Wi-Fi.
Подключитесь к устройству по его ip-адресу.
adb connect device_ip_address
Убедитесь, что устройство появилось в списке.
adb devices
Теперь можно выполнять отладку по Wi-Fi, без использования кабеля.
Если соединение ADB потеряно. Убедитесь, что устройство и компьютер все еще подключены к одной Wi-Fi сети. Переподключитесь, выполнив adb connect снова. Или, если не поможет, перезагрузите хост adb:
adb kill-server
Затем повторите попытку.
После проделанных шагов вы сможете подключаться к устройству без использования USB-кабеля.
Команды ADB
Перед выполнением команд adb полезно знать, какие экземпляры устройств подключены к серверу adb. Список подключенных устройств можно посмотреть следующей командой.
adb devices -l
В ответ adb выведет серийный номер, состояние и описание (параметр -l) подключенных устройств.
В примере ниже показаны три устройства. Первые два — эмуляторы, третье — аппаратное устройство, подключенное к компьютеру.
$ adb devices List of devices attached emulator-5556 device product:sdk_google_phone_x86_64 model:Android_SDK_built_for_x86_64 device:generic_x86_64 emulator-5554 device product:sdk_google_phone_x86 model:Android_SDK_built_for_x86 device:generic_x86 0a388e93 device usb:1-1 product:razor model:Nexus_7 device:flo
Если запущен только один эмулятор или подключено только одно устройство, команда adb отправится на это устройство по умолчанию. Если же запущено несколько эмуляторов и / или устройств, необходимо использовать параметры -d, -e или -s, чтобы указать устройство, на которое должна быть направлена команда.
Нижеприведенная команда отправится на устройство с указанным серийным номером.
adb -s серийный_номер_устройства
Команда отправится только на устройство подключенное через USB. Выдаст ошибку, если подключено больше одного устройства.
adb -d
Команда отправится на устройство в эмуляторе. Выдаст ошибку, если подключено больше одного эмулятора.
adb -e
Подсоединиться к андроид хосту по протоколу TCP/IP (по умолчанию порт 5555, если не указан другой).
adb connect хост:порт
Отсоединиться от андроид подключенного через TCP/IP (по умолчанию порт 5555). Если не задан ни один параметр, отключиться от всех активных соединений.
adb disconnect хост:порт
Перезапуск демона с правами root.
adb root
В некоторых случаях может потребоваться остановить сервер adb, и перезапустить его, чтобы решить проблему (например, если adb не отвечает на команды).
Остановить сервер.
adb kill-server
Запустить сервер.
adb start-server
Копировать файл или папку на устройство.
adb push "путь на PC" "путь на андроид"
Например,
adb push foo.txt /sdcard/foo.txt
Копировать файл или папку с устройства на компьютер.
adb pull "путь на андроид" "путь на PC"
Копировать с компьютера на устройство только новые файлы. С ключом -l не копировать, только создать список.
adb sync каталог
Установить приложение на устройство.
adb install [-l] [-r] [-s] название_приложения.apk
Например,
adb -s 9A301FFAZ00DQT install ~/Downloads/mobyandex-master-arm_6_45.apk
Ключи:
-l блокировка приложения;
-r переустановить приложение, с сохранением данных;
-s установить приложение на карту памяти.
Чтобы удалить приложение с устройства используйте следующую команду.
adb uninstall [-k] название_приложения.apk
Ключ -k означает, не удалять сохраненные данные приложения и пользователя.
Сделать скриншот экрана устройства.
adb shell screencap /sdcard/screen.png
Полученный скриншот можно сразу забрать на компьютер.
adb pull /sdcard/screen.png
Для записи видео с экрана устройства используйте команду screenrecord.
adb shell screenrecord /sdcard/demo.mp4
или с параметрами
adb shell screenrecord --size 1920x1080 --bit-rate 6000000 --time-limit 20 --verbose /sdcard/video.mp4 adb pull /sdcard/video.mp4
Чтобы остановить запись используйте комбинацию клавиш Control + C (Command + C на Mac). По умолчанию максимальный лимит для видео составляет 3 минуты.
С полным списком команд adb можно ознакомиться на сайте developer.android.com.
ADB LogCat
Logcat — инструмент для работы с логами Android.
В простейшем случае, чтобы вывести журнал системных сообщений устройства используйте следующую команду.
adb logcat
или через shell
adb shell # logcat
Для остановки сбора логов нажмите Ctrl+C на клавиатуре (Command + C на Mac).
Чтобы вывести лог на экран и выйти из logcat используйте параметр -d.
В записях лога в Android указан приоритет:
- V — verbose (низший приоритет);
- D — debug;
- I — info;
- W — warning;
- E — error;
- F — fatal;
- S — silent (наивысший приоритет, ничего не выводится).
Фильтровать сообщения по приоритету можно следующим образом.
adb logcat '*:W'
Кроме приоритета у записей указан тэг компонента системы, от которого принято сообщение.
В дополнение к тэгу и приоритету в логе так же содержатся поля с метаданными. Формат можно изменять с помощью параметра -v, за которым следует один из нижеперечисленных форматов вывода:
- brief — показывать приоритет, тэг и PID процесса (формат по умолчанию);
- process — показывать только PID;
- tag — показывать только приоритет, тэг;
- thread — показывать только процесс, поток и приоритет, тэг;
- raw — показать необработанное сообщение, без полей метаданных;
- time — показывать дату, время вызова, приоритет, тэг и PID процесса;
- long — показывать все поля метаданных и отдельно сообщения с пустыми строками.
adb logcat -v thread -d > C:\logcat.txt
Список параметров команды logcat:
-d вывести лог на экран и выйти;
-b загрузить альтернативный буфер лога для просмотра, такой как event или radio;
-c очистить лог и выйти;
-f записать сообщения лога в файл. По умолчанию в stdout;
-g вывести размер указанного буфера лога и выйти;
-n установить максимальное количество ротаций лога;
-s устанавливает silent фильтром по умолчанию;
-v устанавливает формат вывода сообщений лога. По умолчанию brief.
С полным списком команд logcat можно ознакомиться на сайте developer.android.com.
ADB Shell
Android полноценная система Unix со своим Shell, к которому можно подключаться по adb.
adb shell
или
adb [-d | -e | -s serial_number] shell
Команда подключит ваш терминал к shell устройства и вы сможете взаимодействовать с ним используя Unix команды, cat, ls, df и другие, а также запускать скрипты.
Чтобы выполнить одну команду, не переходя в shell используйте команду оболочки следующим образом.
adb shell shell_command
Например,
adb shell df
Команда выше выдаст информацию о количестве свободной памяти на устройстве.
Следующая команда откроет на устройстве экран с настройками.
adb shell am start -a android.settings.SETTINGS
А две последующие через ADB включают и отключают соответственно прокси в настройках сети.
adb shell settings put global http_proxy 192.168.1.10:8888 (тут ip и порт вашего прокси) adb shell settings put global http_proxy :0 (отключает прокси)
Данные команды могут быть полезными, когда к настройкам устройства нет явного доступа, например на устройствах с голосовыми интерфейсами. Я часто пользуюсь ими при отладке Яндекс.Станции.
Полезные ссылки
Android Debug Bridge
Что такое ADB
Утилита Android Debug Bridge
Run apps on a hardware device
SDK Platform Tools
Configure on-device developer options
Logcat command-line tool
Set up ADB on Mac OS X
На этом всё. Но вы можете поддержать проект. Даже небольшая сумма поможет нам писать больше полезных статей.
Если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.