Что такое ADB и как им пользоваться при подключении смартфона к ПК
Далеко не все проблемы, которые возникают при эксплуатации смартфона, можно решить изменением параметров на мобильном устройстве. Порой для устранения неполадок телефон нужно подключить к компьютеру. Но изначально ПК воспринимает ваш гаджет исключительно как внешний накопитель, что не дает ему внести изменения в настройки. Поэтому для получения расширенного доступа к устройству нужно подключить телефон через ADB. Сегодня мы разберемся, что под собой скрывают эти три буквы, и как они помогают решать самые распространенные проблемы Android.

ADB — очень полезная штука, которая помогает решать многие проблемы
Что такое ADB
Аббревиатура ADB расшифровывается как Android Debug Bridge или в переводе на русский язык — отладочный мост Android. Вряд ли данная расшифровка будет понятна обывателю, поэтому обойдемся простыми словами и скажем, что ADB — это официальный инструмент для управления смартфоном на базе операционной системы Андроид через компьютер.
⚡ Подпишись на Androidinsider в Дзене, где мы публикуем эксклюзивные материалы
В отличие от специализированного ПО, которое далеко не всегда предоставляет производитель смартфона, ADB работает с любым устройством на Андроид вне зависимости от его стоимости и марки, а также поддерживается всеми популярными ОС компьютера, включая Windows, macOS и Linux. Универсальный инструмент Android Debug Bridge поставляется в составе Android-SDK и обычно используется разработчиками мобильных приложений, но на практике ADB часто бывает полезен самым обычным пользователям, далеким от программирования.
Зачем нужен Android Debug Bridge

ADB часто упоминается на нашем сайте как средство решения проблем и изменения настроек телефона
Недавно на нашем сайте выходил текст о том, как установить русский язык на Android, если его нет на телефоне. Единственным универсальным способом решения проблемы оказалось использование ADB. Но этим возможности Android Debug Bridge не ограничиваются. Помимо принудительного скачивания недостающего языкового пакета ADB позволяет:
- перепрошить смартфон;
- установить приложение через компьютер;
- скопировать файлы как с телефона, так и на него;
- очистить раздел «data» для освобождения места на внутреннем накопителе;
- удалить приложения, которые не удаляются со смартфона.
Конечно, это далеко не полный список функций ADB, однако приведенных выше примеров должно быть достаточно, чтобы понять важность отладочного моста Android и попытаться разобраться, как им пользоваться.
❗ Поделись своим мнением или задай вопрос в нашем телеграм-чате
Android Debug Bridge — как пользоваться
Прежде всего вам нужно скачать ADB на компьютер. Сделать это можно бесплатно, используя официальный сайт разработчиков Android. Ниже приведены ссылки на отладочный мост для устройств на разных операционных системах:
Android Debug Bridge скачивается в виде архива, который вы можете распаковать в любую папку. Важно, чтобы путь к каталогу не содержал символов из кириллицы, а сам он располагался в корне диска. Второе условие является необязательным, но оно поможет избежать ошибок ADB при использовании.

Так выглядит содержимое папки с ADB
На время отбросим в сторону компьютер и возьмем в руки смартфон, так как его тоже предварительно нужно настроить. Вам потребуется включить отладку по USB, действуя по инструкции:
- Получите права разработчика, если не сделали это ранее. Для этого нужно несколько раз тапнуть по версии прошивки во вкладке настроек «О телефоне».
- Перейдите в раздел «Расширенные настройки», а затем — «Для разработчиков».
- Активируйте переключатель «Отладка по USB», а также «Установка через USB» и «Отладка по USB (Настройки безопасности)».

ADB не будет работать без отладки по USB
Можно сказать, что предварительный этап мы закончили, и теперь пришло время запустить ADB. Увы, Android Debug Bridge не имеет собственного интерфейса и работает только через консоль компьютера. На Windows это командная строка или PowerShell, а на macOS и Linux — терминал.
Загляни в телеграм-канал Сундук Али-Бабы, где мы собрали лучшие товары с АлиЭкспресс
С учетом того, что большинство из вас пользуется компьютерами на Windows, именно на этой ОС мы остановимся подробнее. Итак, для начала работы с ADB необходимо открыть командную строку. С этой целью зажмите клавиши «Win» + «R», в появившемся окошке введите «cmd» и нажмите «Enter». Также для запуска консоли вы можете использовать поиск Windows.

Если вы планируете пользоваться ADB через командную строку, то пакет должен быть распакован в папку, указанную в консоли
Обратите внимание на то, какое расположение папки указано в консоли. Оно должно совпадать с местом, где находится распакованное содержимое архива ADB. Если пути будут отличаться, вам придется вводить нужный адрес вручную или действовать немного иначе:
- Задержите клавишу «Shift» на клавиатуре.
- Щелкните ПКМ по папке, в которой лежит содержимое ADB.
- Выберете опцию «Открыть окно PowerShell» здесь.

Интерфейс PowerShell немного отличается, но функциональность у консоли та же
Далее необходимо подключить смартфон к компьютеру через USB-кабель. В командной строке введите «adb.exe» и нажмите клавишу «Enter», чтобы проверить правильность распаковки отладочного моста и вывести на экран основные команды, которые будут использоваться для управления телефоном. При использовании этой и других команд в PowerShell необходимо прописывать префикс «./», то есть в данной консоли запрос выглядит как «./adb.exe».

Если путь к архиву указан правильно, то примерно так будет выглядеть консоль после выполнения команды «adb.exe»
Теперь нам остается подключить телефон к ADB. Для этого используется команда «adb devices». Введите ее и нажмите Enter.

Наличие смартфона в списке говорит о правильности его подключения через ADB
Если вы нигде не ошиблись, то увидите в командной строке сообщение «List of devices attached» с указанием номера вашего смартфона, подключенного к ПК через Android Debug Bridge. В дальнейшем для взаимодействия с отладочным мостом вам понадобятся команды ADB, которые нужно вводить аналогичным образом через командную строку или PowerShell.
⚡ Подпишись на Androidinsider в Пульс Mail.ru, чтобы получать новости из мира Андроид первым
Команды ADB
Всего того, о чем я рассказал ранее, уже достаточно, чтобы умело обращаться с отладочным мостом Android, а все прочие вводные вы получите в инструкциях, которые публикуются на нашем сайте. Однако есть смысл выделить несколько основных команд ADB и важных особенностей работы с ними:
- adb devices — проверка подключения смартфона через Android Debug Bridge;
- adb install — установка приложений, вводится вместе с расположением инсталлятора (например, «adb install C:\Windows\Users\Androidinsider\Desktop\applications.apk»);
- adb uninstall — удаление приложений (например, «adb uninstall com.google.android.calendar»);
- adb shell — открытие доступа к файлам на смартфоне;
- adb reboot — перезагрузка телефона;
- adb reboot recovery — перезагрузка в Recovery Mode;
- adb wipe data — сброс настроек и удаление всех файлов (вводится после «adb shell»).
Надеюсь, теперь вы поняли, что такое ADB, зачем он нужен и как им пользоваться. А при возникновении дополнительных вопросов не стесняйтесь оставлять их в комментариях или в нашем телеграм-чате.

Теги
- Новичкам в Android
- Операционная система Windows
- Разработка приложений
Наши соцсети
Новости, статьи и анонсы публикаций
Свободное общение и обсуждение материалов
Прикладное adb (Android Debug Bridge) для зумеров

Это обзорная статья для таких же, как и я, которые начали программировать уже в тот момент, когда весь функционал командной строки обрел кнопочки в интерфейсе.
В этой инструкции хочу рассказать о командах adb , которые использовать легче, чем делать то же самое через UI Android Studio или настройки Android.
Основная задача — показать возможности adb , которые избавят от рутинных шагов при разработке/отладке. Например, позволят быстро переключать светлую тему на темную.
Рассмотрим те команды, которые действительно пригождаются хотя бы раз в пару дней. Для остального есть документация.

Денис Долгополов
Что такое ADB
adb (Android Debug Bridge) — это программа для управления андроидом через командную строку.
https://developer.android.com/tools/adb — тут есть более правильное определение + объяснение, почему adb называют клиент-серверным приложением.
Сменить тему (светлая/темная)
// перейти на темную тему adb shell cmd uimode night yes // перейти на светлую тему adb shell cmd uimode night no
Принудительная остановка приложения
adb shell am force-stop ru.test.app
Удалить кэш и данные приложения
adb shell pm clear
Включить/выключить Wi-Fi
adb shell svc wifi enable adb shell svc wifi disable
Удалить файл
Без root-прав некоторые директории будут недоступны через adb
adb shell rm "/records/albums/music.mp3"
Отправить Intent
Пригождается, когда нужно сэмулировать Intent от системы:
adb shell am broadcast -a android.media.tv.action.INITIALIZE_PROGRAMS -n ru.app.test/ru.app.test.featureName.TestBroadcastReceiver
adb shell am start -a android.intent.action.VIEW -d "mydeeplink"
Или запустить Activity:
adb shell am start -n ru.test.app/.feature.main.MyActivity
Установить proxy ip
Если вы пользуетесь Charles/Proxyman или другой программой для работы с трафиком, то можете быстро установить proxy ip командой:
adb shell settings put global http_proxy 192.168.1.12:8888
Сбросить proxy ip:
adb shell settings put global http_proxy :0
Изменить плотность экрана
Удобно для тестирования UI на разных разрешениях:
adb shell wm density 160 например adb shell wm density 160
Узнать, какая изначальная плотность экрана:
adb shell wm density // Physical density: 440 // Override density: 160
Установить apk
adb install -d -r -g "C://downloads/. /test.apk"
аргументы (лишние убрать):
- -r — сохранить данные приложения (например, информацию в shared preferences)
- -g — выдать все разрешение, запрашиваемые в манифесте
- -d — отключает проверку версии приложения (по умолчанию версия устанавливаемого приложения должна быть равна или больше версии установленного)
Подключение по Wi-Fi
Необходимо, чтобы компьютер и телефон находились в одной сети. На Android нужно включить «Отладку по Wi-Fi» в настройках разработчика.
adb connect ip:port например: adb connect 192.168.1.12 или adb connect 192.168.1.12:5555
Список подключенных устройств и их ip
adb devices
Выбор определенного устройства
Если вы работаете с несколькими устройствами, то чтобы отправить любую команду на определенное устройство (а не получать ошибку List of devices attached ), можно передать аргумент -s ip
adb -s 192.168.1.12 uninstall ru.test.app
Заключение
Когда определите для себя топ удобных команд, можно сделать для них alias (псевдонимы для длинных команд). Тогда использование adb станет действительно удобнее, чем GUI .
- android
- android development
- adb
- android debug bridge
- android studio
- андроид
- разработка приложений
- разработка
- разработка под android
- мобильная разработка
Android Debug Bridge для тестировщика без SMS и регистрации
Привет, Хабр! Меня зовут Александр Карпенко, я QA Engineer в inDrive. Я подготовил эту статью для начинающих QA-специалистов. Ниже расскажу, как использовать Android Debug Bridge (ADB) в тестировании мобильных приложений и нужен ли вообще этот инструмент.

Я думаю, базовые знания в тестировании у вас уже есть — поэтому не буду описывать процесс подготовки и настройки. Возможности ADB постоянно расширяются, но я поделюсь приемами, которые пригодятся ежедневно. Мой рассказ — о тестировании мобильных приложений, поэтому речь пойдет о macOS из-за возможности эффективно работать со всеми популярными мобильными платформами. На других ОС примеры могут незначительно отличаться, да простят меня адепты Windows.
Для начала коснемся самых базовых команд, без которых дальнейшее повествование будет нелогичным.
Вывод списка подключенных устройств и соединение с устройством

Обычно мы работаем с одним девайсом, но иногда подключаем несколько устройств — например, по TCP/IP. Тогда указываем вручную, на каком из девайсов нужно выполнить команду. Выводим список всех подключенных устройств, чтобы получить идентификатор:
adb devices — выводит список подключенных устройств. С ключом -l будет расширенный список свойств. Полезно, если подключено несколько устройств и сразу непонятно, какое нам нужно.
Чтобы указать ADB, с каким устройством нужно работать, следует прописать серийный номер устройства после ключа -s :
adb -s , где — серийный номер устройства из списка и — команда, которую надо выполнить на устройстве.
Например, установка приложения на конкретное устройство из списка:
adb -s 32312b96 install user/download/app.apk .
Еще один частый сценарий — одновременная работа с реальным девайсом и эмулятором, например, в роли исполнителя и заказчика. В таком случае легко различать девайсы не по серийному номеру, а с помощью ключей -d -e после команды adb .
adb -d install user/download/app.apk — команда будет выполнена на реальном устройстве с ключем -e на эмуляторе.
Также мы можем подключиться к устройству по TCP/IP, когда оно использует ту же Wi-Fi-сеть. Для этого подключаем устройство к ПК кабелем и меняем режим работы на девайсе с USB на TCP/IP командой adb tcpip 5555 .
Вычисляем IP-адрес устройства любым доступным способом. Например, через настройки телефона в общей информации или с помощью команды
adb shell ifconfig wlan0 .
Если к этому моменту вы уже отключили девайс от ПК, не забудьте дополнительно указать S/N устройства. Подключаемся к нему:
adb connect ip_address:5555 .
Отключить устройство можно командой
adb disconnect ip_address:5555 .
adb disconnect — отключить все наши TCP/IP устройства.
Для возврата в режим работы по USB используем команду
(нижний регистр важен).
Установка и удаление приложения, поиск пакета на устройстве
Установка приложения осуществляется командой
adb install , где — абсолютный путь до нашего APK-файла приложения.
Приведу несколько полезных ключей после команды install, которые часто используются:
-d — переустановка с понижением версии. В противном случае будет ошибка Failure [INSTALL_FAILED_VERSION_DOWNGRADE] .
-r — переустановить приложение с сохранением data.
-g — выдать при установке все пермишены, прописанные в манифесте приложения. Например, приложение, установленное с таким ключом, не будет запрашивать у вас разрешение на гео или доступ к хранилищу для загрузки фото.
Удаление приложения происходит уже по имени пакета. Для этого нужно знать, как приложение регистрируется в системе. Используем оболочку Shell и менеджер пакетов Package Manager (pm).
Следующей командой выведем список всех установленных приложений:
adb shell pm list packages .
Можно отфильтровать список по имени приложения. Это понадобится, если список довольно большой, но мы знаем, какое слово присутствует в названии пакета:
adb shell pm list packages | grep com.myApp .
Также можно сделать вывод в отдельный файл и там найти нужный пакет:
adb shell pm list packages > /Users/username/packages.txt .
Теперь, когда мы знаем, как вычислить имя пакета приложения. Вернемся к тому, как удалить его с устройства. Сделать это можно командой
adb uninstall com.myApp .
adb uninstall -k com.myApp — удаление приложения с сохранением data и кэша.
Отдельно приведу команду, которая часто может пригодиться:
adb shell pm clear com.myApp — почистить кеш и data приложения.
Загрузка APK файла с девайса
Думаю, это весьма редкий случай. Но, возможно, кому-то пригодится, как однажды пригодилось мне. Все установленные приложения хранят свой APK в папке /data/app. Поэтому, зная имя пакета, можно найти место, куда установлено приложение, и скачать оттуда его APK. Для этого выполним команду
adb shell pm path com.myApp — получим директорию установки приложения.
Это может выглядеть не совсем презентабельно:
Но именно в таком виде нам и нужен этот путь. Немного забежим вперед и посмотрим, как можно скопировать на ПК с телефона нужный нам файл. Сделать это можно командой adb pull /Users/username/ , где — результат вывода нашей предыдущей команды. А /Users/username/ — путь на ПК, куда нужно скопировать наш файл.
Текстовые поля
Немного коснемся проверки текстовых полей. Например, нужно проверить ограничение на ввод максимального числа символов в поле. Если вы пользуетесь одним устройством, можно хранить разные наборы передаваемых данных на самом телефоне или в облаке. Но когда приходится проверять на разных девайсах, можно хранить данные для тестирования на ПК и передавать их на устройства следующими командами:
adb shell input text .
adb shell input text test%stest — будет введена строка «test test». Пробелы заменяем спецсимволами %s , иначе на устройство будет передана только часть до пробела. Если в передаваемом тексте мы используем спецсимволы, вроде !@# , нужно выделять их обратным слэшем ( \ ).
adb shell input text test\!\@\#\$%stest выведет на экран “test!@#$ test” .
Важно: ADB не работает с кириллицей, получим NullPointerException.
Существует способ передачи буфера обмена:
adb shell input text $(pbpaste) .
Нужно помнить, что некоторые символы могут не передаваться в том виде, в котором они отображаются на ПК. Проблему можно решить с помощью потокового редактора текста sed. Приведу пример расширенной команды, где мы заменяем все пробелы в буфере на нужные нам спецсимволы для корректной передачи текста на девайс:
adb shell input text $(pbpaste | sed -e ‘s/ /\%s/g’)
pbpaste — текст, который содержится в буфере.
ключ «-e» — позволяет выполнить команды, которые необходимы для редактирования текста.
«s/что взять/на_что_поменять/опция» — шаблон.
/g — флаг для замены всех без исключения вхождений заданного шаблона.
Диплинки
Этот способ поможет проверить переходы по диплинкам на нужные экраны в следующих ситуациях:
- Много экранов.
- Не приходят пуши.
- Пушей еще нет.
- Проверка корректной работы приложения.
- Проверка работы с некорректными пушами.
- Переход по диплинку на экран, к которому нет доступа.
В Shell ADB мы можем выполнять команды с помощью Activity Manager (AM).
Стартуем нашу активити и передаем диплинк, который мы хотим проверить. Обычно в диплинке присутствует символ &, который разделяет экраны. Поэтому при открытии через терминал нужно поставить перед ними обратный слэш (\):
adb shell am start -W -a android.intent.action.VIEW -d “myApp://open/client/trip\&last_trip=test” com.myApp
am — вызов Activity Manager.
W — ожидание загрузки перед выполнением команды.
a — определяем, какое действие будет выполнено. В данном случае action.View.
d — данные для запуска. В данном случае сам диплинк и далее приложение, через которое его следует открыть.
Возможно, при переносе команды в терминал придется переписать кавычки вручную или заменить на одинарные. Может ругаться на ошибку синтаксиса.
Создание скриншотов и запись видео с экрана устройства
Сделаем скриншот этой командой:
adb shell screencap -p /sdcard/screencap.png — сделает скриншот экрана и сохранит файл с именем screencap.png на девайсе в папку /sdcard/screencap.png .
Сохранить скрин на ПК можно так:
adb pull /sdcard/screencap.png — по умолчанию файл копируется в директорию текущего пользователя /Users/username/screencap.png .
Или можно сразу запускать всю команду целиком:
adb shell screencap -p /sdcard/screencap.png && adb pull /sdcard/screencap.png .
На последних версиях ADB скриншот можно получить командой
adb exec-out screencap -p > screen.png — и файл со скриншотом также появится в директории текущего пользователя на ПК.
Установленный по умолчанию путь можно изменить вручную, добавив его в конце команды:
adb exec-out screencap -p > downloads/test/screen.png — и скриншот появится в папке /Users/username/downloads/test/screen.png.
Также при желании можно немного автоматизировать этот процесс, добавив алиас в bash_profile . В macOS можно создать через Automator-службу и задать хоткей.
Для записи видео существует команда:
adb shell screenrecord
adb shell screenrecord /sdcard/screenrecord.mp4 — команда начнет запись экрана устройства с использованием настроек по умолчанию в течении трех минут и сохранит результат записи в файле / sdcard/screenrecord.mp4 на устройстве.
Можно вручную прописать время записи ключом -time-limit time (в секундах, правда запись все равно возможна не более 180 секунд).
Остановить запись раньше времени можно комбинацией клавиш CTRL+C.
Скопировать файл можно также через команду pull по аналогии со скриншотом.
Также можно посмотреть дополнительные возможности этой утилиты с помощью ключа —help . К слову, она умеет изменять разрешение записи, битрейт, добавить дополнительные данные для багрепорта.
Полезно пользоваться ключом -bugreport , который добавляет первым кадром в видео информацию о системе, на которой происходила запись.
Про то, как стянуть с девайса что-либо мы поговорили, теперь поговорим немного о том, как туда что-нибудь закинуть.
Открыли на ПК, изменили формат, содержание, закинули на телефон, проверили, что приложение корректно реагирует на неизвестные форматы, на превышение размера. Загрузить файл на телефон с ПК можно командой:
adb push /Users/username/file
adb push /Users/username/screen.png sdcard — в результате наш файл screen.png скопируется на телефон в раздел sdcard .
Проверка восстановления состояния приложения после его убийства системой

Еще один пример из опыта связан с проверкой восстановления стейта приложения после его убийства системой. Сворачиваем приложение, убиваем процесс — это действие имитирует остановку процесса системой в случае нехватки памяти:
adb shell am kill com.myApp
Запускаем снова, смотрим, что ничего не сломалось.
Мы столкнулись с таким сценарием: пользователь сворачивает приложение, находясь на определенном экране. Через какое-то время система тормозит процесс и кэширует его стейт. Когда пользователь пытается развернуть приложение, получает краш. Это происходит при обращении к данным из кэша, так как фрагменты восстанавливают свой стек и состояние, но кэш уже пустой.
К сожалению, этот баг мы не поймали на тестировании, потому что не сталкивались с таким раньше, и он ушел в прод. Но теперь вы знаете, что такое возможно, и не допустите наших ошибок.
Логи

Работа с логами полезна, когда мы ищем причину краша приложения. Если нужно сохранить текущий буфер логов, сделать это можно командой:
adb logcat — выводит логи в реальном времени.
adb logcat -d — выводит лог на момент запуска команды, не дописывая реальные события на устройстве. Также можно вывести лог в отдельный файл командой: adb logcat -d > file.log (файл создается в директории текущего пользователя).
А команда adb logcat >> file.log будет писать лог сразу в файл, дописывая все реальные события на устройстве.
Существует несколько уровней по мере возрастания: V — Verbose, D — Debug, I — Info, W — Warn, E — Error, F — Fatal, S — Silent. Например:
adb logcat ‘*:E’ — будет выводить логи с ошибками и уровнем выше.
Теперь немного о форматировании вывода и фильтрах, с помощью ключа -v можно изменить формат вывода в консоль:
adb logcat -v time — выводит логи последовательно по времени записи.
adb logcat -v color — отображает каждый уровень логов отдельным цветом, очень помогает при чтении.
adb logcat -v brief — отображает приоритет, тег и PID процесса.
Каждое сообщение журнала имеет тег и связанный с ним приоритет. С их помощью можно уменьшить количество вывода в консоль:
adb logcat SwrveSDK:I ‘*:S’ — будет отображать наши отправляемые события аналитики в сервис Swrve. Параметр *:S говорит о том, что вывод журнала ограничен выражением фильтра.
Ну и всегда можно использовать утилиту grep для фильтрования вывода:
adb logcat ‘*:E’ -v color | grep com.myApp
По традиции, за более дополнительной информацией всегда можно обратиться к помощнику adb logcat —help .
Теперь о том, как это использовать. Например, если баг воспроизвелся, а устройство не было подключено, можно сразу подключить его и перенаправить лог в файл.
Для последующего дебага перед сбором логов можно чистить буфер, чтобы исключить лишние данные. Сделать это можно командой: adb logcat -c , дальше воспроизводим баг и делаем adb logcat -d .
Для любителей покопаться в куче логов есть еще один инструмент — ADB bugreport. Позволяет создавать ZIP-архивы с полной отладочной информацией в простом текстовом формате (.txt) .
adb bugreport /Users/username — создает zip архив в указанной директории.
Копирует всю информацию об устройстве, такую как данные dumpstate , dumpsys и logcat в указанную папку. По умолчанию отчеты об ошибках сохраняются в /bugreports и могут быть просмотрены с помощью:
adb shell ls /bugreports/
Самая важная для нас информация хранится в bugreport—BUILD_ID—DATE.txt
Есть еще один интересный инструмент для работы с крашами — ANR, когда приложение не отвечает Application Not Responding. Запускаем его командой:
adb shell am monitor , и далее воспроизводим наш краш. В консоль будет выведена информация о краше без лишней воды и три варианта продолжения работы нашего мониторинга: ( c)ontinue: show crash dialog, (k)ill: immediately kill app, (q)uit: finish monitoring.
Эмуляторы

Вывод списка настроенных эмуляторов:
Запуск нужного нам эмулятора:
При работе с эмуляторами бывает, что необходимо перезапустить службы. При этом сервер нужно запустить после старта эмулятора, но часто достаточно и одной команды: adb kill-server . Если не помогло, выполняем весь сценарий:
emulator -list-avds — выведем список настроенных эмуляторов.
adb kill-server — останавливаем сервер.
emulator -avd avdname (или emulator @avdname ) — где avdname — имя эмулятора.
adb start-server — заново запускаем сервер.
adb devices — выводим список подключенных устройств, наш потерянный эмулятор должен появиться.
Для самых ленивых, можно создать эмулятор из командной строки. Например, следующая команда создает эмулятор с именем “test”, используя системный x86-образ с API 25:
avdmanager create avd -n test -k «system—images;android-25;google_apis;x86»
Если нужного образа нет, можно предварительно установить его командой:
sdkmanager —install «system—images;android—25;google_apis;x86»
sdkmanager —list | grep system—images — выведет список доступных для скачивания образов.
С эмуляторами также во время работы иногда возникают фантомные проблемы, и одна из частых команд, которая помогает это загрузка эмулятора на холодную без подтягивания автоматического снапшота, при этом на выходе снапшот будет сделан:
emulator @avdname -no-snapshot-load
Еще несколько полезных ключей при старте эмулятора:
-no-snapshot-save — не будет автоматического сохранения снапшота.
-no-snapshot — не будет ни загрузки, ни сохранения снапшота.
Если эмулятору по-прежнему плохо, можно очистить его с помощью ключа, который возвращает эмулятор в первоначальное состояние: -wipe-data .
Создание снапшотов — весьма полезный инструмент для сохранения разных состояний девайса. Вручную это можно делать через настройки эмулятора, либо с помощью команды:
adb emu avd snapshot save test — сохраняем состояние эмулятора, где test — имя снапшота, которое будет храниться на девайсе.
emulator @avdname -snapshot-list — запускаем наш эмулятор с именем @avdname с выводом в консоль списка снапшотов
Далее можно загрузить сохраненный ранее снапшот командой:
adb emu avd snapshot load test — где test — имя сохраненного ранее снапшота.
adb emu avd snapshot delete test — удаляет снапшот с именем test .
Можно сразу запускать эмулятор с нужным нам снапшотом: emulator @avdname -snapshot test .
Также с помощью команды pull можно стащить снапшот с девайса:
adb emu avd snapshot pull test /Users/username/ .
С нашим эмулятором можно работать через консоль telnet . Но для этого сначала надо ее установить. Самый простой способ — через менеджер пакетов brew , если он у вас есть. А если нет, самое время узнать, что это и как им пользоваться. Итак, устанавливаем telnet командой brew install telnet .
Далее запускаем наш эмулятор. В другой вкладке терминала подключаемся к нему командой telnet localhost port .
telnet localhost 5554 — подключиться к нашему эмулятору, использующего порт 5554.
После отработки команды мы можем делать всякие полезные штуки с нашим эмулятором, в том числе, работать с geo . Например, команда geo fix 40.748840 —73.984279 установит нужное нам местоположение по указанным координатам.
Например, работа со снапшотами немного упрощается, команды из предыдущего раздела сокращаются до avd snapshot .
Изменение разрешения на девайсе
Для проверки корректности отображения элементов на экране устройства есть полезные команды менеджера окон (wm), позволяющие изменять разрешение и плотность пикселей. Так можно перебрать все необходимые варианты размеров экрана и посмотреть, как наше приложение будет адаптироваться под них:
adb shell wm size 1080×1920 — установить кастомное разрешение экрана, где ширина будет равна 1080, а высота — 1920.
adb shell wm size reset — сбросить все наши изменения.
adb shell wm density X — менять плотность пикселей, где минимальное значение — 72. Чем больше значение, тем крупнее элементы на экране.
adb shell wm density reset — сбросить все наши изменения.
Если мы запустим наши команды без аргументов, нам вернется текущее разрешение экрана и плотность пикселей подключенного устройства или эмулятора.
Monkey

Отдельно можно упомянуть инструмент Monkey, который генерирует случайные пользовательские события на эмуляторе или устройстве: клики, касания и жесты, а также ряд событий системного уровня, что напоминает движения глупой мартышки. Можно использовать Monkey для стресс-тестирования.
adb shell monkey — вывод всех параметров обезьянки.
Пример полного сценария: adb shell monkey—throttle 100—pct—syskeys 0 -p com.myApp -v 10 .
Ключ -throttle — задержка между действиями в миллисекундах. Так как Monkey выполняет свои действия довольно быстро, этот ключ обычно используется, когда мы хотим визуально контролировать происходящее на экране.
Ключ -pct-syskeys — определяет процент системных кнопок, которые будут нажаты в процессе сценария. В данном примере установлено значение 0, что говорит о том, что системные кнопки не будут нажиматься совсем.
Ключ -p — имя пакета, который мы передаем.
Ключ -v — количество действий, которые нужно выполнить.
Разрешения приложения
Работа с пермишенами заключается в их отзыве у приложения, потому что предоставление разрешение обычно идет через запрос самого приложения. Это делается быстро и просто, тогда как отзыв разрешения идет через системные настройки.
adb shell dumpsys package com.MyApp | grep permission — выводит список из доступных разрешений приложения. Например, install permissions — обязательные разрешение, которые выдаются при установки приложения. runtime permissions — разрешения, которые запрашиваются в конкретный момент: например, при обращении к файловому хранилищу. Замечу, что если в списке requested permission нет какого-либо разрешения, выдать к нему доступ не получится.
Итак, чтоб отозвать разрешение у нашего приложения, нужно выполнить команду adb shell pm revoke packageName permissionName .
adb shell pm revoke com.MyApp android.permission.CAMERA — отзовет у приложения com.myApp доступ к камере. После возврата в приложение и попытке использовать через него камеру мы снова увидим запрос на предоставление разрешения.
Командой grant мы выдаем разрешение приложению. Например,
adb shell pm grant com.myApp android.permission.CAMERA — для нашего приложения будет выдан доступ на использование камеры телефона.
Батарея

Немного коснемся работы с батареей, а также затронем режим ожидания.
adb shell dumpsys battery — вывод информации о батареи.
adb shell dumpsys battery set level X — установка уровня заряда батареи, где X — процент заряда.
adb shell dumpsys battery unplug — имитация отключения зарядки.
adb shell dumpsys battery reset — сброс всех наших изменений.
Теперь поговорим про режимах ожидания. Начиная с Android 6.0, появилась функция Doze Mode. Она направлена на экономию заряда и продление срока службы батареи за счет ограничения активности приложений после того, как пользователь не взаимодействовал с устройством и оно не находилось на зарядке.
При этом система периодически выходит из Doze Mode для выполнения отложенных фоновых задач. Еще один схожий инструмент Android — App Standby. В отличие от Doze Mode, это состояние конкретного приложения, которое находится в фоне определенный период времени и после этого входит в режим Standby. Наша задача — убедиться в том, что приложение нормально восстанавливает свою работу после выхода из этих двух режимов энергосбережения.
Для перехода устройства в режим Doze Mode нужно выполнить следующие команды:
adb shell dumpsys battery unplug — отключить зарядку.
adb shell dumpsys deviceidle step — команду, возможно, придется выполнить несколько раз, пока она не вернет Stepped to deep: IDLE .
После всех манипуляций с батареей лучше выполнить команду adb shell dumpsys battery reset , вернув ее в исходное состояние.
Также есть команда для принудительного ввода устройства в Doze Mode: adb shell dumpsys deviceidle force-idle , иногда перед этим нужно выполнить команду adb shell dumpsys deviceidle enable .
Вывести обратно из состояния Doze Mode можно командой adb shell dumpsys deviceidle unforce . Не забываем сбросить состояние батареи: adb shell dumpsys battery reset .
Теперь немного про App Standby. Для перевода приложения в данный режим нужно выполнить следующие команды:
adb shell dumpsys battery unplug — отключаем батарею, как и в предыдущем случае.
adb shell am set—inactive com.myApp true — вводим приложение в режим App Standby.
Далее выводим наше приложение из режима App Standby командой adb shell am set-inactive com.myApp false .
Проверить статус приложения можно командой adb shell am get-inactive com.myApp .
Еще немного полезных команд
adb reboot — перезагрузка устройства, актуально и для реального девайса.
adb shell dumpsys package com.myApp — вывести полную информацию о конкретном приложении.
adb shell dumpsys meminfo com.myApp — посмотреть использование памяти приложением на девайсе от занимаемого места до отображения баз данных, используемых этим приложением.
adb shell getprop — получить список доступных свойств устройства: производитель, модель устройства, хардварные спецификации и другое.
Получить список доступных для приложения Activity: adb shell dumpsys package com.myApp | grep -i Activity .
Получить имя запущенной активити: adb shell dumpsys window | grep Focused .
Запустить выбранную активити приложения: adb shell am start -n com.myApp/.ActivityClass — можно запускать любые установленные приложения, в том числе и системные. Например: adb shell am start -n com.android.settings/.Settings — запустит наши настройки телефона.
Сделать вызов на указанный телефонный номер: adb shell am start -a android.intent.action.CALL tel:+790900000XX .
Открыть страницу в браузере: adb shell am start -a android.intent.action.VIEW ‘https://indriver.com’
В конце хочу сказать, что все возможности Android Debug Bridge невозможно запихнуть в одну статью, как и досконально изучить их работу. Постоянно что-то меняется: что работало сегодня, внезапно может перестать работать завтра. А потребности в знаниях тех или иных инструментов будут возникать по мере поиска решения конкретных задач.
Но могу с уверенностью сказать, что этого материала вам хватит для старта и даже больше. Удачи в ваших начинаниях и приятного погружения в интересный мир тестирования.
- тестирование
- adb
- android
- qa
- тестирование мобильных приложений
- android debug bridge
- разработка мобильных приложений
- monkey
- эмулятор
- debug
- Блог компании inDrive.Tech
- Разработка мобильных приложений
- Тестирование мобильных приложений
Что такое ADB и как с ним работать
Читая статьи о перепрошивке и рутинге Android-устройств, вы наверняка встречали упоминание консольной команды adb в тексте. Этот инструмент очень популярен среди энтузиастов ОС Android и применяется почти во всех графических и консольных утилитах для рутинга, снятия защиты и других действий. Однако, далеко не каждый пользователь знаком с этим инструментом и не знает его полезнейших возможностей, таких как установка и удаление приложений, синхронизация папок между настольной машиной и смартфоном, снятие скриншотов, открытие доступа в интерет через смартфон и многих других.
Что такое ADB
ADB это протокол или, проще говоря, система связи между настольной машиной и смартфоном по USB-кабелю, которая изначально была разработана сотрудниками Google для отладки и выполнения сервисных задач над смартфоном. Другими словами это инструмент для разработчиков, который тем не менее имеет множество функций, которые могут быть полезны и обычному пользователю.
ADB состоит из двух компонентов: сервера, который работает на смартфоне, и клиентской программы, которую пользователь запускает на большом брате. Сам клиент представляет собой небольшую консольную команду, которую следует запускать либо в окне DOS в Windows, либо в эмуляторе терминала в Linux. Вся работа с ADB сводится примерно к следующему: с помощью клиента пользователь отдает команду, а смартфон ее выполняет.
Как пользоваться ADB
Перед тем как начать использовать ADB следует обзавестись клиентом. По умолчанию он распространяется в составе Android SDK, однако если вы не хотите устанавливать SDK, клиент можно получить и отдельно. Архив с клиентами для Windows, Mac и Linux можно получить, например, здесь. Просто распакуйте этот архив на диск C: в Windows или в домашний каталог в Linux. Если вы работаете в Windows не забудьте установить все необходимые драйверы (обычно они устанавливаются автоматически при первом подключении смартфона/планшета с помощью USB-кабеля).
Теперь подключите устройство к USB и включите на нем режим отладки (Настройки — Для разработчиков — Отладка по USB). Откройте консоль (Пуск — Выполнить — сmd — Enter в Windows), перейдите и наберите следующие команды для проверки успешности соединения ADB-клиента с сервером:
cd c:\adb_fastboot adb-windows.exe devices
Если все в порядке на экран должно быть выведено что-то вроде таких строк:
List of devices attached 0146A0D016016010 device
Сразу рекомендую переименовать файл adb-windows.exe в adb.exe для удобства (в дальнейшем я буду использовать именно такой вариант названия, тем более что в SDK он такой).
Установка и удаление приложений
С помощью ADB достаточно удобно устанавливать и удалять приложения со смартфона/планшета. Для этого предусмотрены команды “adb install” и “adb uninstall”. Так, например, чтобы установить пакет на смартфон, выполните такую команду в той же консоли:
adb install c:/пакет.apk
Чтобы установить приложение на карту памяти добавьте ключ -s:
adb install -s c:/пакет.apk
Для удаления приложения используйте такую команду:
adb uninstall com.drweb
Обратите внимание, что следует использовать системное имя приложения, которое можно узнать просмотрев информацию о нужном приложении на смартфоне, либо получить список всех установленных приложений выполнив такую команду:
adb shell ls /data/app
И уже из него выбрать необходимое.
Копирование файлов и синхронизация каталогов
Кроме установки и удаления пакетов вы также можете перемещать файлы и целые каталоги между компьютером и картой памяти устройства. Так, например, чтобы переместить папку c:/music на карту памяти достаточно выполнить такую команду:
adb push c:/music /sdcard
А чтобы получить папку с фотографиями с карты памяти — такую:
adb pull /sdcard/DCIM/Camera c:/
Однако, самое полезное применение ADB это синхронизация папок между компьютером и смартфоном. Допустим у вас есть папка c:/music, в которую вы постоянно добавляете новую музыку и хотели бы чтобы добавленная недавно музыка перекочевала на смартфон без необходимости копирования всей музыки, половина которой уже есть на смартфоне. Нет ничего проще, воспользуйтесь синхронизацией:
adb sync c:/music /sdcard/Music
Выход в интернет через смартфон
Еще одна очень интересная функция ADB это возможность проброса сетевых портов или, говоря на человеческом языке, возможность сделать так, чтобы выход в интернет происходил через смартфон. Да, для этого есть функция WiFi hotspot и различные приложения вроде PDANet, однако метод с использованием ADB поможет в случае экстренной ситуации, когда под рукой кроме смартфона и ADB нет ничего.
Чтобы воспользоваться этой функцией запустите ADB в режиме проброса портов:
adb forward tcp:8080 tcp:8080
Затем установите на смартфон и запустите приложение Proxoid и настройте браузер настольной машины на использование прокси по адресу “localhost:8080”.
Это все. Теперь выход в интернет будет происходить через смартфон. Сразу оговорюсь, что HTTPS-сайты работать не будут, поэтому получить доступ, например, к Gmail не получиться.
Бэкап и восстановление приложений и настроек
Современные версии ADB кроме всего перечисленного поддерживают также функцию бэкапа и восстановления установленных приложений и их настроек, что может пригодится при обнолвении прошивки или при экспериментах. Воспользоваться функцией очень просто. Чтобы сделать бэкап всех приложений и настроек достаточно выполнить следующую команду:
adb backup -f c:\\backup -apk -all
Все настройки и приложения будут сохранены в файл c:\backup. Для его восстановления достаточно выполнить такую команду:
adb restore c:\\backup
Другие функции
Что еще можно сделать с помощью ADB? Например, получить доступ к консоли Android:
adb shell
Имеет смысл использовать только в том случае, если вы знаете что это такое.
С помощью ADB также можно принудительно перезагрузить устройство:
adb reboot
Чтобы перезагрузиться в консоль восстановления используйте такую команду:
adb reboot recovery
ADB по сети
Сервер ADB может работать и в сетевом режиме, когда вместо USB-кабеля для доступа к устройству используется локальная WiFi-сеть. В целях безопасности в стандартных прошивках сетевой режим отключен, но в таких прошивках как CyanogenMod, AOKP и других его можно активировать через настройки. А если получить root то и в любой прошивке с помощью бесплатного приложения WiFi ADB. Просто установите его, нажмите кнопку “Turn On” и наберите в консоли Windows строку, которая появится на экране, например:
adb connect 192.168.0.101:5555
Далее можно использовать все стандартные команды ADB
Выводы
ADB очень мощный инструмент, а если в придачу к нему вы изучите консоль Android, то сможете делать со своим смартфоном все, что угодно. Кстати, чтобы не вбивать все указанные в статье команды в консоли, можно создать несколько скриптов (текстовых файлов с расширением .bat) и добавить в них нужные команды. Тогда для запуска команд придется просто кликнуть по скрипту.
Back to the root
- Back to the root
- zobnin@gmail.com