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-устройства.
Если драйвера для вашего устройства не нашлось на указанных страницах, попробуйте поискать его на сайте производителя.
Для MacOS и Linux установка драйверов не требуется.
Далее потребуется установить Android SDK Platform Tools. Если вы используете
Установка ADB в Windows
Скачайте
В системную переменную Path добавьте путь к распакованной папке, для этого:
- перейдите в Панель управления – Система и безопасность – Система;
- выберите пункт Дополнительные параметры системы;
- нажмите кнопку Переменные среды;
- в поле Системные переменные выберите значение Path и нажмите кнопку Изменить, чтобы добавить новое значение;
- укажите путь к папке platform-tools содержащую adb;
- перезагрузите компьютер.
Установка ADB в Linux
Чтобы установить SDK Platform Tools в Ubuntu выполните следующую команду.
apt-get install adb
или
sudo apt-get install android-tools-adb
Либо вручную скачать
Установка ADB в MacOS
Самый простой способ установить SDK Platform Tools на MacOS, используя Homebrew.
brew cask install android-platform-tools
Либо установить вручную.
Сперва удалите предыдущую версию android-platform-tools, если такая имеется.
rm -rf ~/.android-sdk-macosx/
Затем скачайте
Перейдите в папку с загрузками, распакуйте скачанный архив и переместите файлы программы в удобное для вас место, например в домашнюю директорию.
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 можно ознакомится на
Отладка 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 можно ознакомиться на сайте
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 можно ознакомиться на сайте
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 (отключает прокси)
Данные команды могут быть полезными, когда к настройкам устройства нет явного доступа, например на устройствах с голосовыми интерфейсами. Я часто пользуюсь ими при отладке Яндекс.Станции.
Полезные ссылки
На этом всё. Но вы можете поддержать проект. Даже небольшая сумма поможет нам писать больше полезных статей.
Если статья помогла или понравилась, пожалуйста поделитесь ей в соцсетях.