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 под управлением 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. Меню конфигураций запуска.Появится окно «Сопряжение устройств по Wi-Fi» , как показано на рисунке 2.
Рисунок 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, например, корпоративные, могут блокировать p2p-подключения и не позволять вам подключиться по Wi-Fi. Попробуйте подключиться через кабель или другую (не корпоративную) сеть Wi-Fi. Другой вариант — беспроводное подключение с помощью
adb connect ip : port
over tcp/ip (после первоначального подключения по USB), если есть возможность использовать некорпоративную сеть.Иногда
adb
через Wi-Fi отключается автоматически : это может произойти, если устройство переключается между сетями Wi-Fi или отключается от сети. Для решения проблемы повторно подключитесь к сети.Устройство не подключается после успешного сопряжения :
adb
использует mDNS для обнаружения сопряженных устройств и автоматического подключения к ним. Если ваша сеть или конфигурация устройства не поддерживает mDNS или отключён, необходимо вручную подключиться к устройству, используяadb connect ip : port
.
Подключитесь к устройству по беспроводной сети после первоначального подключения по USB (единственная возможность доступна на устройствах Android 10 и ниже)
Примечание: этот рабочий процесс применим также к Android 11 (и выше), однако следует помнить, что он также включает *первоначальное* подключение через физический USB.
Примечание: следующие инструкции не применимы к устройствам Wear под управлением 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
еще раз. - Если это не поможет, сбросьте настройки хоста
adb
: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 | Вывести заданную спецификацию намерения как intent: URI. |
Спецификация для аргументов намерения
Для команд диспетчера действий, которые принимают аргумент 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 | Включить указанный пакет или компонент (пишется как «пакет/класс»). |
disable package_or_component | Отключить указанный пакет или компонент (записывается как «пакет/класс»). |
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 ] | Сбросить состояние проверки домена для указанного пакета или для всех пакетов, если ни один не указан.
Возможны следующие варианты:
|
verify-app-links [ --re-verify ] [ package ] | Передать запрос на проверку для указанного package или для всех пакетов, если пакет не указан. Отправляет только в том случае, если пакет ранее не зарегистрировал ответ.
|
set-app-links [--package package ] state domains | Вручную установите состояние домена для пакета. Для работы этого параметра домен должен быть объявлен пакетом как autoVerify. Эта команда не выдаст сообщение об ошибке для доменов, которые не удалось применить.
|
set-app-links-user-selection --user user_id [--package package ] enabled domains | Вручную установите состояние выбора пользователя хоста для пакета. Для работы этого параметра домен должен быть объявлен пакетом. Эта команда не выдаст сообщение об ошибке для доменов, которые не удалось применить.
|
set-app-links-allowed --user user_id [--package package ] allowed | Переключить настройку автоматической проверки ссылок для пакета.
|
get-app-link-owners --user user_id [--package package ] domains | Вывести владельцев определенного домена для заданного пользователя в порядке от низшего к высшему приоритету.
|
Вызов диспетчера политик устройств ( dpm
)
Чтобы упростить разработку и тестирование приложений для управления устройствами, отправляйте команды инструменту управления политиками устройств ( dpm
). Используйте этот инструмент для управления активным приложением администратора или изменения данных о состоянии политики на устройстве.
В оболочке синтаксис dpm
следующий:
dpm command
Вы также можете ввести команду диспетчера политик устройств непосредственно из adb
, не входя в удаленную оболочку:
adb shell dpm command
Таблица 3. Доступные команды диспетчера политик устройств
Команда | Описание |
---|---|
set-active-admin [ options ] component | Устанавливает component в качестве активного администратора. Возможны следующие варианты:
|
set-profile-owner [ options ] component | Установить component как активного администратора, а его пакет как владельца профиля для существующего пользователя. Возможны следующие варианты:
|
set-device-owner [ options ] component | Установите component в качестве активного администратора, а его пакет в качестве владельца устройства. Возможны следующие варианты:
|
remove-active-admin [ options ] component | Отключить активного администратора. Приложение должно объявить android:testOnly в манифесте. Эта команда также удаляет владельцев устройств и профилей.Возможны следующие варианты:
|
clear-freeze-period-record | Очистите запись устройства о ранее установленных периодах приостановки для системных обновлений OTA. Это полезно, чтобы избежать ограничений планирования устройства при разработке приложений, которые управляют периодами зависания. См. Управление обновлениями системы . Поддерживается на устройствах под управлением Android 9.0 (уровень API 28) и выше. |
force-network-logs | Заставьте систему подготовить все существующие сетевые журналы к получению ЦОД. Если доступны журналы подключения или DNS, ЦОД получает обратный вызов onNetworkLogsAvailable() . См. Журнал сетевой активности .Эта команда ограничена по скорости. Поддерживается на устройствах под управлением Android 9.0 (уровень API 28) и выше. |
force-security-logs | Заставьте систему сделать все существующие журналы безопасности доступными для ЦОД. Если доступны журналы, ЦОД получает обратный вызов onSecurityLogsAvailable() . См. Журнал активности корпоративных устройств .Эта команда ограничена по скорости. Поддерживается на устройствах под управлением Android 9.0 (уровень API 28) и выше. |
Сделать снимок экрана
Команда screencap
— это утилита оболочки для создания снимка экрана устройства.
В оболочке синтаксис screencap
следующий:
screencap filename
Чтобы использовать screencap
из командной строки, введите следующее:
adb shell screencap /sdcard/screen.png
Вот пример сеанса создания снимков экрана с использованием оболочки adb
для создания снимка экрана и команды pull
для загрузки файла с устройства:
$ adb shell shell@ $ screencap /sdcard/screen.png shell@ $ exit $ adb pull /sdcard/screen.png
Альтернативно, если вы опустите имя файла, screencap
запишет изображение в стандартный вывод. В сочетании с опцией -p
для указания формата PNG вы можете передать снимок экрана устройства непосредственно в файл на локальном компьютере.
Вот пример создания снимка экрана и его локального сохранения с помощью одной команды:
# use 'exec-out' instead of 'shell' to get raw data $ adb exec-out screencap -p > screen.png
Запишите видео
Команда screenrecord
— это утилита оболочки для записи дисплея устройств под управлением Android 4.4 (уровень API 19) и выше. Утилита записывает действия на экране в файл MPEG-4. Вы можете использовать этот файл для создания рекламных или обучающих видеороликов, а также для отладки и тестирования.
В оболочке используйте следующий синтаксис:
screenrecord [options] filename
Чтобы использовать screenrecord
из командной строки, введите следующее:
adb shell screenrecord /sdcard/demo.mp4
Остановите запись экрана, нажав Control+C. В противном случае запись автоматически останавливается через три минуты или по истечении времени, установленного --time-limit
.
Чтобы начать запись экрана вашего устройства, выполните команду screenrecord
для записи видео. Затем запустите команду pull
, чтобы загрузить видео с устройства на главный компьютер. Вот пример сеанса записи:
$ adb shell shell@ $ screenrecord --verbose /sdcard/demo.mp4 (press Control + C to stop) shell@ $ exit $ adb pull /sdcard/demo.mp4
Утилита screenrecord
может записывать с любым поддерживаемым разрешением и скоростью передачи данных, которые вы запрашиваете, сохраняя при этом соотношение сторон дисплея устройства. По умолчанию утилита записывает с исходным разрешением и ориентацией дисплея, максимальная продолжительность — три минуты.
Ограничения утилиты screenrecord
:
- Звук не записывается вместе с видеофайлом.
- Запись видео недоступна для устройств под управлением Wear OS.
- Некоторые устройства могут не поддерживать запись с исходным разрешением экрана. Если у вас возникли проблемы с записью экрана, попробуйте использовать более низкое разрешение экрана.
- Поворот экрана во время записи не поддерживается. Если экран поворачивается во время записи, часть экрана при записи обрезается.
Таблица 4. Параметры screenrecord
Параметры | Описание |
---|---|
--help | Отобразить синтаксис и параметры команды |
--size width x height | Установите размер видео: 1280x720 . Значением по умолчанию является собственное разрешение экрана устройства (если оно поддерживается), в противном случае — 1280x720. Для достижения наилучших результатов используйте размер, поддерживаемый кодером Advanced Video Coding (AVC) вашего устройства. |
--bit-rate rate | Установите битрейт видео в мегабитах в секунду. Значение по умолчанию — 20 Мбит/с. Вы можете увеличить скорость передачи данных, чтобы улучшить качество видео, но это приведет к увеличению размера файлов фильмов. В следующем примере устанавливается скорость записи 6 Мбит/с: screenrecord --bit-rate 6000000 /sdcard/demo.mp4 |
--time-limit time | Установите максимальное время записи в секундах. Значение по умолчанию и максимальное значение — 180 (3 минуты). |
--rotate | Поверните выход на 90 градусов. Эта функция является экспериментальной. |
--verbose | Отображение информации журнала на экране командной строки. Если вы не установите эту опцию, утилита не будет отображать никакой информации во время работы. |
Чтение профилей ART для приложений
Начиная с Android 7.0 (уровень API 24), среда выполнения Android (ART) собирает профили выполнения установленных приложений, которые используются для оптимизации производительности приложений. Изучите собранные профили, чтобы понять, какие методы выполняются часто и какие классы используются во время запуска приложения.
Примечание. Получить имя файла профиля выполнения можно только в том случае, если у вас есть root-доступ к файловой системе, например, в эмуляторе.
Чтобы создать текстовую форму информации профиля, используйте следующую команду:
adb shell cmd package dump-profiles package
Чтобы получить созданный файл, используйте:
adb pull /data/misc/profman/package.prof.txt
Сброс тестовых устройств
Если вы тестируете свое приложение на нескольких тестовых устройствах, может оказаться полезным выполнять сброс настроек вашего устройства между тестами, например, чтобы удалить пользовательские данные и сбросить тестовую среду. Вы можете выполнить сброс настроек тестового устройства под управлением Android 10 (уровень API 29) или выше с помощью команды оболочки adb
testharness
, как показано:
adb shell cmd testharness enable
При восстановлении устройства с помощью testharness
устройство автоматически создает резервную копию ключа RSA, который позволяет выполнять отладку на текущей рабочей станции в постоянном месте. То есть после перезагрузки устройства рабочая станция может продолжать отладку и выдавать adb
-команды устройству без ручной регистрации нового ключа.
Кроме того, чтобы упростить и повысить безопасность тестирования вашего приложения, использование testharness
для восстановления устройства также изменяет следующие настройки устройства:
- В устройстве настраиваются определенные системные параметры, чтобы не появлялись мастера первоначальной настройки устройства. То есть устройство переходит в состояние, из которого вы можете быстро установить, отладить и протестировать свое приложение.
- Настройки:
- Отключает экран блокировки.
- Отключает экстренные оповещения.
- Отключает автоматическую синхронизацию учетных записей.
- Отключает автоматическое обновление системы.
- Другой:
- Отключает предустановленные приложения безопасности.
Если вашему приложению необходимо обнаружить и адаптироваться к настройкам по умолчанию команды testharness
, используйте ActivityManager.isRunningInUserTestHarness()
.
SQLite
sqlite3
запускает программу командной строки sqlite
для проверки баз данных SQLite. Он включает в себя такие команды, как .dump
для печати содержимого таблицы и .schema
для печати инструкции SQL CREATE
для существующей таблицы. Вы также можете выполнять команды SQLite из командной строки, как показано:
$ adb -s emulator-5554 shell $ sqlite3 /data/data/com.example.app/databases/rssitems.db SQLite version 3.3.12 Enter ".help" for instructions
Примечание. Доступ к базе данных SQLite возможен только при наличии root-доступа к файловой системе, например, в эмуляторе.
Дополнительную информацию см. в документации по командной строке sqlite3
.
adb USB-бэкэнды
Сервер adb может взаимодействовать со стеком USB через два бэкэнда. Он может использовать либо собственный серверный компонент ОС (Windows, Linux или macOS), либо серверную часть libusb
. Некоторые функции, такие как attach
, detach
и определение скорости USB, доступны только при использовании серверной части libusb
.
Вы можете выбрать серверную часть, используя переменную среды ADB_LIBUSB
. Если он не установлен, adb использует свой бэкэнд по умолчанию. Поведение по умолчанию варьируется в зависимости от ОС. Начиная с ADB v34 , бэкэнд liubusb
используется по умолчанию во всех ОС, кроме Windows, где по умолчанию используется собственный бэкэнд. Если установлен ADB_LIBUSB
, он определяет, будет ли использоваться собственный бэкенд или libusb
. Дополнительную информацию о переменных среды adb см. на странице руководства adb.
бэкэнды adb mDNS
ADB может использовать протокол многоадресной рассылки DNS для автоматического подключения сервера и устройств. Сервер ADB поставляется с двумя серверными модулями: Bonjour (mdnsResponder от Apple) и Openscreen.
Серверной части Bonjour необходим демон, работающий на хост-компьютере. В macOS встроенный демон Apple всегда работает, но в Windows и Linux пользователь должен убедиться, что демон mdnsd
запущен и работает. Если команда adb mdns check
возвращает ошибку, вполне вероятно, что ADB использует серверную часть Bonjour, но демон Bonjour не запущен.
Серверной части Openscreen не требуется запуск демона на компьютере. Поддержка серверной части Openscreen в macOS начинается с ADB v35. Windows и Linux поддерживаются начиная с ADB v34.
По умолчанию ADB использует серверную часть Bonjour. Это поведение можно изменить с помощью переменной среды ADB_MDNS_OPENSCREEN
(установленной в 1
или 0
). Дополнительную информацию см. на странице руководства АБР .
adb Burst Mode (начиная с ADB 36.0.0)
Burst Mode — экспериментальная функция, которая позволяет ADB продолжать отправлять пакеты устройству даже до того, как устройство ответит на предыдущий пакет. Это значительно увеличивает пропускную способность ADB при передаче больших файлов, а также снижает задержку при отладке.
Режим пакетной съёмки по умолчанию отключён. Чтобы включить эту функцию, выполните одно из следующих действий:
- Установите для переменной среды
ADB_DELAYED_ACK
значение1
. - В Android Studio перейдите в настройки отладчика в меню Файл (или Android Studio в macOS) > Настройки > Сборка, выполнение, развертывание > Отладчик и установите для параметра ADB Server Burst Mode значение Включено .