Android Debug Bridge ( adb ) — это универсальный инструмент командной строки, позволяющий взаимодействовать с устройством. Команда adb упрощает выполнение различных действий с устройством, таких как установка и отладка приложений. adb предоставляет доступ к оболочке Unix, которую можно использовать для выполнения различных команд на устройстве. Это клиент-серверная программа, включающая три компонента:
- Клиент , который отправляет команды. Клиент работает на вашей машине разработчика. Вы можете запустить клиент из командной строки, выполнив команду
adb. - Демон (adbd) , который выполняет команды на устройстве. Демон работает как фоновый процесс на каждом устройстве.
- Сервер , который управляет обменом данными между клиентом и демоном. Сервер работает как фоновый процесс на вашей машине для разработки.
adb входит в пакет Android SDK Platform Tools. Загрузите этот пакет с помощью SDK Manager , который установит его в android_sdk /platform-tools/ . Если вам нужен автономный пакет Android SDK Platform Tools, загрузите его здесь .
Для получения информации о подключении устройства для использования через adb , включая способы использования мастера подключения для устранения распространенных проблем, см. раздел «Запуск приложений на аппаратном устройстве» .
Как работает ADB
При запуске клиента adb он сначала проверяет, запущен ли уже процесс сервера adb . Если нет, он запускает процесс сервера. После запуска сервер привязывается к локальному TCP-порту 5037 и прослушивает команды, отправляемые клиентами adb .
Примечание: Все клиенты adb используют порт 5037 для связи с сервером adb .
Затем сервер устанавливает соединения со всеми запущенными устройствами. Он находит эмуляторы, сканируя нечетные порты в диапазоне от 5555 до 5585, который используется первыми 16 эмуляторами. Там, где сервер обнаруживает демон adb (adbd), он устанавливает соединение с этим портом.
Каждый эмулятор использует пару последовательных портов — четный порт для подключения к консоли и нечетный порт для подключения по протоколу adb . Например:
Эмулятор 1, консоль: 5554
Эмулятор 1, adb : 5555
Эмулятор 2, консоль: 5556
Эмулятор 2, adb : 5557
и так далее.
Как показано, эмулятор, подключенный к adb через порт 5555, идентичен эмулятору, консоль которого прослушивает порт 5554.
После того как сервер установит соединения со всеми устройствами, вы можете использовать команды adb для доступа к этим устройствам. Поскольку сервер управляет соединениями с устройствами и обрабатывает команды от нескольких клиентов adb , вы можете управлять любым устройством с любого клиента или из скрипта.
Включите отладку adb на вашем устройстве.
Для использования adb с устройством, подключенным через USB, необходимо включить отладку по USB в системных настройках устройства, в разделе «Параметры разработчика» . В Android 4.2 (уровень API 17) и выше экран «Параметры разработчика» по умолчанию скрыт. Чтобы сделать его видимым, включите «Параметры разработчика».
Теперь вы можете подключить своё устройство через USB. Проверить подключение можно, выполнив adb devices из каталога ` android_sdk /platform-tools/ . Если подключение установлено, вы увидите имя устройства в списке как `"device"`.
Примечание: При подключении устройства под управлением Android 4.2.2 (уровень API 17) или выше система отображает диалоговое окно с вопросом, следует ли принять ключ RSA, разрешающий отладку через этот компьютер. Этот механизм безопасности защищает устройства пользователей, поскольку гарантирует, что отладка по USB и другие команды adb не могут быть выполнены, если вы не сможете разблокировать устройство и подтвердить сообщение в диалоговом окне.
Для получения дополнительной информации о подключении к устройству через USB, ознакомьтесь с разделом «Запуск приложений на аппаратном устройстве» .
Подключитесь к устройству через Wi-Fi.
Примечание: Приведенные ниже инструкции не относятся к устройствам Wear OS под управлением Android 11 (уровень API 30). Дополнительную информацию см. в руководстве по отладке приложений Wear OS .
Android 11 (уровень API 30) и выше поддерживают беспроводное развертывание и отладку приложений с рабочей станции с помощью Android Debug Bridge (adb). Например, вы можете развернуть отлаживаемое приложение на нескольких удаленных устройствах, не подключая их физически через USB. Это устраняет необходимость в решении распространенных проблем с USB-подключением, таких как установка драйверов.
Прежде чем начать использовать беспроводную отладку, выполните следующие действия:
Убедитесь, что ваша рабочая станция и устройство подключены к одной и той же беспроводной сети.
Убедитесь, что на вашем устройстве установлена версия Android 11 (уровень API 30) или выше для телефонов или Android 13 (уровень API 33) или выше для телевизоров и WearOS. Для получения дополнительной информации см. раздел «Проверка и обновление версии Android» .
Если вы используете IDE, убедитесь, что у вас установлена последняя версия Android Studio. Скачать её можно здесь .
На вашем рабочем компьютере обновите SDK Platform Tools до последней версии.
Для использования беспроводной отладки необходимо выполнить сопряжение устройства с рабочей станцией с помощью QR-кода или кода сопряжения. Рабочая станция и устройство должны быть подключены к одной и той же беспроводной сети. Для подключения к устройству выполните следующие действия:
Включите параметры разработчика на вашем устройстве.
Откройте Android Studio и в меню настроек запуска выберите «Сопряжение устройств с помощью Wi-Fi» .
Рисунок 1. Меню настроек запуска.Как показано на рисунке 2, появляется окно « Сопряжение устройств по Wi-Fi» .
Рисунок 2. Всплывающее окно для сопряжения устройств с помощью QR-кода или кода сопряжения.На устройстве нажмите «Беспроводная отладка» и выполните сопряжение устройства:
Рисунок 3. Скриншот настроек беспроводной отладки на телефоне Google Pixel.Для сопряжения устройства с QR-кодом выберите «Сопряжение устройства с QR-кодом» и отсканируйте QR-код, полученный из всплывающего окна «Сопряжение устройств по Wi-Fi», показанного на рисунке 2.
Чтобы выполнить сопряжение устройства с помощью кода сопряжения, выберите «Сопряжение устройства с помощью кода сопряжения» во всплывающем окне «Сопряжение устройств по Wi-Fi» . На устройстве выберите «Сопряжение с помощью кода сопряжения» и запишите полученный шестизначный код. После того, как ваше устройство появится в окне «Сопряжение устройств по Wi-Fi» , вы можете выбрать «Сопряжение» и ввести шестизначный код, отображаемый на вашем устройстве.
Рисунок 4. Пример ввода шестизначного кода.
После сопряжения устройства вы можете попытаться развернуть приложение на нем.
Чтобы выполнить сопряжение другого устройства или удалить текущее устройство из списка сопряженных устройств на вашей рабочей станции, перейдите в раздел «Беспроводная отладка» на вашем устройстве. Коснитесь имени вашей рабочей станции в разделе «Сопряженные устройства» и выберите «Удалить» .
Чтобы быстро включать и выключать беспроводную отладку, вы можете использовать плитки быстрого доступа для беспроводной отладки , которые находятся в разделе «Параметры разработчика» > «Плитки быстрого доступа» .
Рисунок 5. В разделе «Быстрые настройки» панели инструментов разработчика можно быстро включать и выключать беспроводную отладку.
Подключение к Wi-Fi через командную строку
В качестве альтернативы, чтобы подключиться к устройству через командную строку без использования Android Studio, выполните следующие действия:
Включите параметры разработчика на вашем устройстве, как описано ранее.
Включите беспроводную отладку на вашем устройстве, как описано ранее.
На рабочем компьютере откройте окно терминала и перейдите в папку
android_sdk/platform-tools.Чтобы узнать свой IP-адрес, номер порта и код сопряжения, выберите пункт «Сопряжение устройства с помощью кода сопряжения» . Запишите IP-адрес, номер порта и код сопряжения, отображаемые на устройстве.
На терминале вашей рабочей станции выполните команду
adb pair ipaddr:port. Используйте IP-адрес и номер порта, указанные выше.При появлении запроса введите код сопряжения, как показано ниже.
Рисунок 6. Сообщение указывает на то, что ваше устройство успешно сопряжено.
Устранение проблем с беспроводным подключением
Если у вас возникли проблемы с беспроводным подключением к устройству, попробуйте выполнить следующие действия по устранению неполадок.
Проверьте, соответствуют ли ваша рабочая станция и устройство необходимым требованиям.
Убедитесь, что рабочая станция и устройство соответствуют предварительным требованиям, перечисленным в начале этого раздела .
Проверьте наличие других известных проблем.
Ниже приведён список известных на данный момент проблем с беспроводной отладкой (с помощью adb или Android Studio) и способы их решения:
Wi-Fi не подключается : Защищенные сети Wi-Fi, такие как корпоративные сети Wi-Fi, могут блокировать P2P-соединения и не позволять подключаться по Wi-Fi. Попробуйте подключиться через кабель или другую (некорпоративную) сеть Wi-Fi. Беспроводное подключение с помощью
adb connect ip : portover tcp/ip (после первоначального подключения через USB) — еще один вариант, если подключение к некорпоративной сети возможно.adbчерез Wi-Fi иногда автоматически отключается : это может произойти, если устройство переключается между сетями Wi-Fi или отключается от сети. Для решения проблемы повторно подключитесь к сети.Устройство не подключается после успешного сопряжения :
adbиспользует mDNS для обнаружения и автоматического подключения к сопряженным устройствам. Если ваша сеть или конфигурация устройства не поддерживают mDNS или отключены, вам необходимо вручную подключиться к устройству с помощьюadb connect ip : port.
Подключитесь к устройству по беспроводной сети после первоначального USB-соединения (единственная доступная опция для Android 10 и более ранних версий).
Примечание: Этот алгоритм применим также к Android 11 (и более поздним версиям), с той оговоркой, что он также включает *первоначальное* подключение через физический USB-порт.
Примечание: Приведенные ниже инструкции не относятся к устройствам Wear OS под управлением Android 10 (уровень API 29) или более ранних версий. Дополнительную информацию см. в руководстве по отладке приложений Wear OS .
Обычно adb взаимодействует с устройством через USB, но вы также можете использовать adb через Wi-Fi. Для подключения устройства под управлением Android 10 (уровень API 29) или ниже выполните следующие начальные шаги через USB:
- Подключите ваше устройство Android и компьютер, на котором установлен
adbк общей сети Wi-Fi. - Подключите устройство к компьютеру с помощью USB-кабеля.
- Настройте целевое устройство на прослушивание TCP/IP-соединений на порту 5555:
adb tcpip 5555
- Отсоедините USB-кабель от целевого устройства.
- Узнайте IP-адрес устройства Android. Например, на устройстве Nexus IP-адрес можно найти в разделе «Настройки» > «О планшете» (или «О телефоне» ) > «Состояние» > «IP-адрес» .
- Подключитесь к устройству по его IP-адресу:
adb connect device_ip_address:5555
- Убедитесь, что ваш главный компьютер подключен к целевому устройству:
$ adb devices List of devices attached device_ip_address:5555 device
Примечание: Имейте в виду, что не все точки доступа подходят. Возможно, вам потребуется использовать точку доступа, брандмауэр которой правильно настроен для поддержки adb .
Ваше устройство теперь подключено к adb .
Если соединение adb с вашим устройством потеряно:
- Убедитесь, что ваш хост по-прежнему подключен к той же сети Wi-Fi, что и ваше устройство Android.
- Для восстановления соединения повторно выполните шаг
adb connect. - Если это не поможет, перезагрузите
adbhost:adb kill-server
Затем начните все сначала.
Запрос устройств
Перед выполнением команд adb полезно знать, какие экземпляры устройств подключены к серверу adb . Список подключенных устройств можно получить с помощью команды devices :
adb devices -l
В ответ adb выводит следующую информацию о состоянии каждого устройства:
- Серийный номер:
adbсоздает строку для уникальной идентификации устройства по номеру порта. Вот пример серийного номера:emulator-5554 - Состояние: Состояние подключения устройства может быть одним из следующих:
-
offline: Устройство не подключено кadbили не отвечает. -
device: Устройство подключено к серверуadb. Обратите внимание, что это состояние не означает, что система Android полностью загружена и работоспособна, поскольку устройство подключается кadbво время загрузки системы. После загрузки это нормальное рабочее состояние устройства. -
no device: Устройство не подключено.
-
- Описание: Если добавить опцию
-l, командаdevicesпокажет, что это за устройство. Эта информация полезна, когда подключено несколько устройств, чтобы вы могли их различать.
В следующем примере показана команда devices и её вывод. Работают три устройства. Первые две строки в списке — это эмуляторы, а третья строка — это аппаратное устройство, подключенное к компьютеру.
$ 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 devices имеет особую последовательность команд, из-за которой запущенные эмуляторы не отображаются в выводе adb devices даже если они видны на рабочем столе. Это происходит, когда выполняются все следующие условия:
- Сервер
adbне запущен. - Для работы с командой
emulatorиспользуйте параметр-portили-ports, указав нечетное число порта от 5554 до 5584. - Выбранный вами нечетный порт не занят, поэтому соединение может быть установлено через указанный номер порта — или, если он занят, эмулятор переключается на другой порт, соответствующий требованиям пункта 2.
- Сервер
adbзапускается после запуска эмулятора.
Один из способов избежать этой ситуации — позволить эмулятору самостоятельно выбирать порты и запускать не более 16 эмуляторов одновременно. Другой способ — всегда запускать сервер adb перед использованием команды emulator , как показано в следующих примерах.
Пример 1: В следующей последовательности команд команда adb devices запускает сервер adb , но список устройств не отображается.
Остановите сервер adb и введите следующие команды в указанном порядке. В качестве имени AVD укажите допустимое имя AVD из вашей системы. Чтобы получить список имен AVD, введите команду emulator -list-avds . Команда emulator находится в каталоге android_sdk /tools .
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5555 $ adb devices List of devices attached * daemon not running. starting it now on port 5037 * * daemon started successfully *
Пример 2: В следующей последовательности команд команда adb devices отображает список устройств, поскольку сначала был запущен сервер adb .
Чтобы увидеть эмулятор в выводе adb devices , остановите сервер adb , а затем запустите его снова после выполнения команды emulator и перед выполнением команды adb devices , следующим образом:
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5557 $ adb start-server $ adb devices List of devices attached emulator-5557 device
Для получения дополнительной информации о параметрах командной строки эмулятора см. раздел «Параметры запуска из командной строки» .
Отправка команд на конкретное устройство
Если запущено несколько устройств, необходимо указать целевое устройство при выполнении команды adb . Чтобы указать целевое устройство, выполните следующие действия:
- Используйте команду
devices, чтобы получить серийный номер целевого устройства. - Получив серийный номер, используйте опцию
-sв командахadb, чтобы указать его.- Если вы собираетесь часто выполнять команды
adb, вы можете установить переменную среды$ANDROID_SERIAL, указав в ней серийный номер. - Если вы используете одновременно
-sи$ANDROID_SERIAL,-sпереопределяет параметр$ANDROID_SERIAL.
- Если вы собираетесь часто выполнять команды
В следующем примере получается список подключенных устройств, а затем серийный номер одного из устройств используется для установки файла helloWorld.apk на это устройство:
$ adb devices List of devices attached emulator-5554 device emulator-5555 device 0.0.0.0:6520 device # To install on emulator-5555 $ adb -s emulator-5555 install helloWorld.apk # To install on 0.0.0.0:6520 $ adb -s 0.0.0.0:6520 install helloWorld.apk
Примечание: Если вы введете команду, не указав целевое устройство, когда доступно несколько устройств, adb отобразит ошибку "adb: более одного устройства/эмулятора".
Если у вас доступно несколько устройств, но только одно из них является эмулятором, используйте параметр -e для отправки команд эмулятору. Если устройств несколько, но подключено только одно аппаратное устройство, используйте параметр -d для отправки команд аппаратному устройству.
Установите приложение
С помощью adb можно установить APK-файл на эмулятор или подключенное устройство, используя команду install :
adb install path_to_apk
При установке тестового APK-файла необходимо использовать параметр -t с командой install . Дополнительную информацию см. в разделе -t .
Для установки нескольких APK-файлов используйте install-multiple . Это полезно, если вы загрузили все APK-файлы для конкретного устройства для вашего приложения из Play Console и хотите установить их на эмулятор или физическое устройство.
Для получения дополнительной информации о том, как создать APK-файл, который можно установить на эмулятор/устройство, см. раздел «Сборка и запуск приложения» .
Примечание: Если вы используете Android Studio, вам не нужно напрямую использовать adb для установки приложения на эмулятор или устройство. Вместо этого Android Studio автоматически упакует и установит приложение.
Настройте переадресацию портов.
Используйте команду forward для настройки произвольной переадресации портов, которая перенаправляет запросы с определенного порта хоста на другой порт устройства. В следующем примере настраивается переадресация порта хоста 6100 на порт устройства 7100:
adb forward tcp:6100 tcp:7100
В следующем примере настраивается переадресация порта 6100 хоста на local:logd:
adb forward tcp:6100 local:logd
Это может быть полезно, если вы пытаетесь определить, какие данные отправляются на заданный порт устройства. Все полученные данные будут записаны в системный демон логирования и отображены в журналах устройства.
Копирование файлов на устройство и с устройства
Используйте команды pull и push для копирования файлов на устройство и с устройства. В отличие от команды install , которая копирует APK-файл только в определенное место, команды pull и push позволяют копировать произвольные каталоги и файлы в любое место на устройстве.
Чтобы скопировать файл или каталог, а также его подкаталоги с устройства, выполните следующие действия:
adb pull remote local
Чтобы скопировать файл или каталог, а также его подкаталоги на устройство, выполните следующие действия:
adb push local remote
Замените local и remote путями к целевым файлам/каталогам на вашей машине разработки (локально) и на устройстве (удаленно). Например:
adb push myfile.txt /sdcard/myfile.txt
Остановите сервер adb
В некоторых случаях для решения проблемы может потребоваться завершить процесс сервера adb , а затем перезапустить его. Например, это может произойти, если adb не отвечает на команду.
Чтобы остановить сервер adb , используйте команду adb kill-server . Затем вы можете перезапустить сервер, выполнив любую другую команду adb .
Выполните команды adb
Выполняйте команды adb из командной строки на вашей машине разработчика или из скрипта, используя следующие параметры:
adb [-d | -e | -s serial_number] command
Если запущен только один эмулятор или подключено только одно устройство, команда adb по умолчанию отправляется на это устройство. Если запущено несколько эмуляторов и/или подключено несколько устройств, необходимо использовать параметр -d , -e или -s чтобы указать целевое устройство, которому должна быть направлена команда.
Подробный список всех поддерживаемых команд adb можно получить с помощью следующей команды:
adb --help
Выполняйте команды оболочки.
Вы можете использовать команду shell для отправки команд устройству через adb или для запуска интерактивной оболочки. Чтобы отправить одну команду, используйте команду shell следующим образом:
adb [-d |-e | -s serial_number] shell shell_command
Чтобы запустить интерактивную оболочку на устройстве, используйте команду shell следующим образом:
adb [-d | -e | -s serial_number] shell
Чтобы выйти из интерактивной оболочки, нажмите Control+D или введите exit .
Android предоставляет большинство стандартных инструментов командной строки Unix. Чтобы получить список доступных инструментов, используйте следующую команду:
adb shell ls /system/bin
Для большинства команд справка доступна через аргумент --help . Многие команды оболочки предоставляются toybox . Общая справка, применимая ко всем командам toybox, доступна через toybox --help .
Начиная с Android Platform Tools 23 и выше, adb обрабатывает аргументы так же, как и команда ssh(1) . Это изменение исправило множество проблем с внедрением команд и позволяет безопасно выполнять команды, содержащие метасимволы оболочки, например, adb install Let\'sGo.apk . Это изменение означает, что интерпретация любой команды, содержащей метасимволы оболочки, также изменилась.
Например, adb shell setprop key ' two words ' теперь выдает ошибку, поскольку кавычки игнорируются локальной оболочкой, и устройство видит adb shell setprop key two words . Чтобы команда работала, заключите ее в кавычки дважды: один раз для локальной оболочки и один раз для удаленной оболочки, как это делается с ssh(1) . Например, команда adb shell setprop key "' two words '" работает, потому что локальная оболочка принимает внешний уровень кавычек, а устройство по-прежнему видит внутренний уровень кавычек: setprop key 'two words' . Экранирование также является вариантом, но заключение в кавычки дважды обычно проще.
См. также инструмент командной строки Logcat , полезный для мониторинга системного журнала.
Менеджер активности звонков
В оболочке adb можно отдавать команды с помощью инструмента управления активностью ( am ) для выполнения различных системных действий, таких как запуск активности, принудительная остановка процесса, трансляция намерения, изменение свойств экрана устройства и многое другое.
В командной оболочке синтаксис команды am выглядит следующим образом:
am command
Вы также можете выполнить команду диспетчера действий непосредственно из adb , не входя в удалённую оболочку. Например:
adb shell am start -a android.intent.action.VIEW
Таблица 1. Доступные команды диспетчера действий.
| Командование | Описание |
|---|---|
start [ options ] intent | Запустить Activity указанное в intent .См. Спецификацию для ознакомления с аргументами, касающимися намерений . Варианты следующие:
|
startservice [ options ] intent | Запустить Service указанную в intent .См. Спецификацию для ознакомления с аргументами, касающимися намерений . Варианты следующие:
|
force-stop package | Принудительно остановите все, что связано с этим package . |
kill [ options ] package | Завершить все процессы, связанные с package . Эта команда завершает только те процессы, которые безопасно завершить и которые не повлияют на работу пользователя.Варианты следующие:
|
kill-all | Завершите все фоновые процессы. |
broadcast [ options ] intent | Выдать сообщение с намерением трансляции. См. Спецификацию для ознакомления с аргументами, касающимися намерений . Варианты следующие:
|
instrument [ options ] component | Начните мониторинг с помощью экземпляра Instrumentation . Как правило, целевым component является форма test_package / runner_class .Варианты следующие:
|
profile start process file | Запустить профилировщик для process , записать результаты в file . |
profile stop process | Остановить профилировщик для process . |
dumpheap [ options ] process file | Выгрузить содержимое кучи process , записать в file .Варианты следующие:
|
dumpbitmaps [ options ] [-p process ] | Выгрузка информации о битовой карте из process (уровень API 36 и выше).Варианты следующие:
process не указан, будут выгружены битовые карты всех процессов. |
set-debug-app [ options ] package | Перевести package приложения в режим отладки.Варианты следующие:
|
clear-debug-app | Очистите пакет, ранее настроенный для отладки, с помощью set-debug-app . |
monitor [ options ] | Начните мониторинг на предмет сбоев или ошибок ANR. Варианты следующие:
|
screen-compat {on | off} package | Управление режимом совместимости экрана package . |
display-size [reset | width x height ] | Переопределить размер экрана устройства. Эта команда полезна для тестирования вашего приложения на экранах разных размеров, имитируя небольшое разрешение экрана на устройстве с большим экраном и наоборот. Пример: |
display-density dpi | Переопределить плотность экрана устройства. Эта команда полезна для тестирования вашего приложения на экранах с разной плотностью, имитируя среду с высокой плотностью экрана с помощью экрана с низкой плотностью, и наоборот. Пример: |
to-uri intent | Выведите заданное описание намерения в виде URI. См. Спецификацию для ознакомления с аргументами, касающимися намерений . |
to-intent-uri intent | Вывести заданное описание намерения в виде URI intent: .См. Спецификацию для ознакомления с аргументами, касающимися намерений . |
Спецификация аргументов намерения
Для команд диспетчера действий, принимающих аргумент intent , вы можете указать Intent с помощью следующих параметров:
Вызов менеджера пакетов ( pm )
В оболочке adb вы можете отдавать команды с помощью инструмента управления пакетами ( pm ) для выполнения действий и запросов к пакетам приложений, установленным на устройстве.
В командной оболочке синтаксис pm выглядит следующим образом:
pm command
Вы также можете выполнить команду менеджера пакетов непосредственно из adb , не входя в удалённую оболочку. Например:
adb shell pm uninstall com.example.MyApp
Таблица 2. Доступные команды менеджера пакетов.
| Командование | Описание |
|---|---|
list packages [ options ] filter | Вывести все пакеты, при желании только те, в названии которых содержится текст из filter .Параметры:
|
list permission-groups | Вывести список всех известных групп прав доступа. |
list permissions [ options ] group | Вывести все известные разрешения, при желании только те, которые входят в group .Параметры:
|
list instrumentation [ options ] | Перечислите все тестовые пакеты. Параметры:
|
list features | Распечатайте все характеристики системы. |
list libraries | Выведите список всех библиотек, поддерживаемых текущим устройством. |
list users | Распечатать список всех пользователей в системе. |
path package | Вывести путь к APK-файлу указанного package . |
install [ options ] path | Установите в систему пакет, указанный path .Параметры:
|
uninstall [ options ] package | Удаляет пакет из системы. Параметры:
|
clear package | Удалите все данные, связанные с пакетом. |
enable package_or_component | Включите указанный пакет или компонент (обозначается как "package/class"). |
disable package_or_component | Отключить указанный пакет или компонент (обозначается как "package/class"). |
disable-user [ options ] package_or_component | Параметры:
|
grant package_name permission | Предоставьте приложению разрешение. На устройствах под управлением Android 6.0 (уровень API 23) и выше разрешение может быть любым разрешением, указанным в манифесте приложения. На устройствах под управлением Android 5.1 (уровень API 22) и ниже это должно быть необязательное разрешение, определенное приложением. |
revoke package_name permission | Отзыв разрешения у приложения. На устройствах под управлением Android 6.0 (уровень API 23) и выше разрешение может быть любым разрешением, указанным в манифесте приложения. На устройствах под управлением Android 5.1 (уровень API 22) и ниже это должно быть необязательное разрешение, определенное приложением. |
set-install-location location | Измените место установки по умолчанию. Значения места установки:
Примечание: Это предназначено только для отладки. Использование этого может привести к сбоям в работе приложений и другим нежелательным последствиям. |
get-install-location | Возвращает текущее местоположение установки. Возвращаемые значения:
|
set-permission-enforced permission [true | false] | Укажите, следует ли применять данное разрешение на практике. |
trim-caches desired_free_space | Удалите файлы кэша, чтобы освободить место. |
create-user user_name | Создайте нового пользователя с заданным user_name , выведя на экран идентификатор этого пользователя. |
remove-user user_id | Удалите пользователя с указанным user_id , удалив все связанные с ним данные. |
get-max-users | Вывести на экран максимальное количество пользователей, поддерживаемое устройством. |
get-app-links [ options ] [ package ] | Вывести состояние проверки домена для заданного package или для всех пакетов, если ни один не указан. Коды состояний определяются следующим образом:
Варианты следующие:
|
reset-app-links [ options ] [ package ] | Reset domain verification state for the given package, or for all packages if none is specified.
Options are:
|
verify-app-links [ --re-verify ] [ package ] | Broadcast a verification request for the given package , or for all packages if none is specified. Only sends if the package has previously not recorded a response.
|
set-app-links [--package package ] state domains | Manually set the state of a domain for a package. The domain must be declared by the package as autoVerify for this to work. This command will not report a failure for domains that could not be applied.
|
set-app-links-user-selection --user user_id [--package package ] enabled domains | Manually set the state of a host user selection for a package. The domain must be declared by the package for this to work. This command will not report a failure for domains that could not be applied.
|
set-app-links-allowed --user user_id [--package package ] allowed | Toggle the auto-verified link-handling setting for a package.
|
get-app-link-owners --user user_id [--package package ] domains | Print the owners for a specific domain for a given user in low- to high-priority order.
|
Call device policy manager ( dpm )
To help you develop and test your device management apps, issue commands to the device policy manager ( dpm ) tool. Use the tool to control the active admin app or change a policy's status data on the device.
While in a shell, the dpm syntax is:
dpm command
You can also issue a device policy manager command directly from adb without entering a remote shell:
adb shell dpm command
Table 3. Available device policy manager commands
| Командование | Описание |
|---|---|
set-active-admin [ options ] component | Sets component as active admin. Options are:
|
set-profile-owner [ options ] component | Set component as active admin and its package as profile owner for an existing user. Options are:
|
set-device-owner [ options ] component | Set component as active admin and its package as device owner. Options are:
|
remove-active-admin [ options ] component | Disable an active admin. The app must declare android:testOnly in the manifest. This command also removes device and profile owners.Options are:
|
clear-freeze-period-record | Clear the device's record of previously set freeze periods for system OTA updates. This is useful to avoid the device scheduling restrictions when developing apps that manage freeze periods. See Manage system updates . Supported on devices running Android 9.0 (API level 28) and higher. |
force-network-logs | Force the system to make any existing network logs ready for retrieval by a DPC. If there are connection or DNS logs available, the DPC receives the onNetworkLogsAvailable() callback. See Network activity logging .This command is rate-limited. Supported on devices running Android 9.0 (API level 28) and higher. |
force-security-logs | Force the system to make any existing security logs available to the DPC. If there are logs available, the DPC receives the onSecurityLogsAvailable() callback. See Log enterprise device activity .This command is rate-limited. Supported on devices running Android 9.0 (API level 28) and higher. |
Сделайте скриншот
The screencap command is a shell utility for taking a screenshot of a device display.
While in a shell, the screencap syntax is:
screencap filename
To use screencap from the command line, enter the following:
adb shell screencap /sdcard/screen.png
Here's an example screenshot session, using the adb shell to capture the screenshot and the pull command to download the file from the device:
$ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png
Alternatively, if you omit the filename, screencap writes the image to standard output. When combined with the -p option to specify PNG format, you can stream the device screenshot directly to a file on your local machine.
Here's an example of capturing a screenshot and saving it locally in a single command:
# use 'exec-out' instead of 'shell' to get raw data $ adb exec-out screencap -p > screen.png
Записать видео
The screenrecord command is a shell utility for recording the display of devices running Android 4.4 (API level 19) and higher. The utility records screen activity to an MPEG-4 file. You can use this file to create promotional or training videos or for debugging and testing.
In a shell, use the following syntax:
screenrecord [options] filename
To use screenrecord from the command line, enter the following:
adb shell screenrecord /sdcard/demo.mp4
Stop the screen recording by pressing Control+C. Otherwise, the recording stops automatically at three minutes or the time limit set by --time-limit .
To begin recording your device screen, run the screenrecord command to record the video. Then, run the pull command to download the video from the device to the host computer. Here's an example recording session:
$ adb shell shell@ $ screenrecord --verbose /sdcard/demo.mp4 (press Control + C to stop) shell@ $ exit $ adb pull /sdcard/demo.mp4
The screenrecord utility can record at any supported resolution and bit rate you request, while retaining the aspect ratio of the device display. The utility records at the native display resolution and orientation by default, with a maximum length of three minutes.
Limitations of the screenrecord utility:
- Audio is not recorded with the video file.
- Video recording is not available for devices running Wear OS.
- Some devices might not be able to record at their native display resolution. If you encounter problems with screen recording, try using a lower screen resolution.
- Rotation of the screen during recording is not supported. If the screen does rotate during recording, some of the screen is cut off in the recording.
Table 4. screenrecord options
| Параметры | Описание |
|---|---|
--help | Display command syntax and options |
--size width x height | Set the video size: 1280x720 . The default value is the device's native display resolution (if supported), 1280x720 if not. For best results, use a size supported by your device's Advanced Video Coding (AVC) encoder. |
--bit-rate rate | Set the video bit rate for the video, in megabits per second. The default value is 20Mbps. You can increase the bit rate to improve video quality, but doing so results in larger movie files. The following example sets the recording bit rate to 6Mbps: screenrecord --bit-rate 6000000 /sdcard/demo.mp4 |
--time-limit time | Set the maximum recording time, in seconds. The default and maximum value is 180 (3 minutes). |
--rotate | Rotate the output 90 degrees. This feature is experimental. |
--verbose | Display log information on the command-line screen. If you do not set this option, the utility does not display any information while running. |
Read ART profiles for apps
Starting in Android 7.0 (API level 24), the Android Runtime (ART) collects execution profiles for installed apps, which are used to optimize app performance. Examine the collected profiles to understand which methods are executed frequently and which classes are used during app startup.
Note: It is only possible to retrieve the execution profile filename if you have root access to the file system, for example, on an emulator.
To produce a text form of the profile information, use the following command:
adb shell cmd package dump-profiles package
To retrieve the file produced, use:
adb pull /data/misc/profman/package.prof.txt
Reset test devices
If you test your app across multiple test devices, it may be useful to reset your device between tests, for example, to remove user data and reset the test environment. You can perform a factory reset of a test device running Android 10 (API level 29) or higher using the testharness adb shell command, as shown:
adb shell cmd testharness enable
When restoring the device using testharness , the device automatically backs up the RSA key that allows debugging through the current workstation in a persistent location. That is, after the device is reset, the workstation can continue to debug and issue adb commands to the device without manually registering a new key.
Additionally, to help make it easier and more secure to keep testing your app, using the testharness to restore a device also changes the following device settings:
- The device sets up certain system settings so that initial device setup wizards do not appear. That is, the device enters a state from which you can quickly install, debug, and test your app.
- Настройки:
- Disables lock screen.
- Disables emergency alerts.
- Disables auto-sync for accounts.
- Disables automatic system updates.
- Другой:
- Disables preinstalled security apps.
If your app needs to detect and adapt to the default settings of the testharness command, use the ActivityManager.isRunningInUserTestHarness() .
sqlite
sqlite3 starts the sqlite command-line program for examining SQLite databases. It includes commands such as .dump to print the contents of a table and .schema to print the SQL CREATE statement for an existing table. You can also execute SQLite commands from the command line, as shown:
$ adb -s emulator-5554 shell $ sqlite3 /data/data/com.example.app/databases/rssitems.db SQLite version 3.3.12 Enter ".help" for instructions
Note: It is only possible to access a SQLite database if you have root access to the file system, for example, on an emulator.
For more information, see the sqlite3 command line documentation .
adb USB backends
The adb server can interact with the USB stack through two backends. It can either use the native backend of the OS (Windows, Linux, or macOS) or it can use the libusb backend. Some features, such as attach , detach , and USB speed detection, are only available when using libusb backend.
You can choose a backend by using the ADB_LIBUSB environment variable. If it isn't set, adb uses its default backend. The default behavior varies among OS. Starting with ADB v34 , the liubusb backend is used by default on all OS except Windows, where the native backend is used by default. If ADB_LIBUSB is set, it determines whether the native backend or libusb is used. See the adb manual page for more information about adb environment variables.
adb mDNS backends
ADB can use the multicast DNS protocol to automatically connect the server and devices. The ADB server ships with two backends, Bonjour (Apple's mdnsResponder) and Openscreen.
The Bonjour backend needs a daemon to be running on the host machine. On macOS Apple's built-in daemon is always running, but on Windows and Linux, the user must make sure the mdnsd daemon is up and running. If the command adb mdns check returns an error, it is likely that ADB is using the Bonjour backend but there is no Bonjour daemon running.
The Openscreen backend does not need a daemon to be running on the machine. Support for the Openscreen backend on macOS starts at ADB v35. Windows and Linux are supported as of ADB v34.
By default ADB uses the Bonjour backend. This behavior can be changed using the environment variable ADB_MDNS_OPENSCREEN (set to 1 or 0 ). See the ADB manual page for further details.
adb Burst Mode (starting with ADB 36.0.0)
Burst Mode is an experimental feature that lets ADB to keep on sending packets to a device even before the device has responded to the previous packet. This greatly increases the throughput of ADB when transferring large files and also reduces latency while debugging.
Burst Mode is disabled by default. To enable the feature, do one of the following:
- Set the environment variable
ADB_BURST_MODEto1. - In Android Studio, go to the debugger settings at File (or Android Studio on macOS) > Settings > Build, Execution, Deployment > Debugger and set ADB Server Burst Mode to Enabled .