Советы и рекомендации ADB: команды, о которых должен знать каждый опытный пользователь

В Android Debug Bridge есть много такого, о чем вы, возможно, не знаете. Нажмите здесь, чтобы получить полезные советы и рекомендации по использованию ADB!

Быстрые ссылки

  • Доступ к оболочке
  • Подключение к нескольким устройствам
  • Передача файлов
  • Ведение журнала
  • Список установленных приложений через ADB
  • Установка и удаление приложений через ADB
  • Извлечение APK с помощью ADB
  • Резервное копирование и восстановление данных приложения
  • Перечисление компонентов приложения
  • Запуск мероприятий, услуг и приемников вещания
  • Отключение и включение практически любого приложения
  • Захват скриншотов
  • Передача двоичных данных между ПК и устройством Android

Если вы были энтузиастом Android, скрывающимся на сцене моддинга, или разработчиком приложений в течение длительного времени рано или поздно вы наткнетесь на удобный инструмент под названием Android Debug Bridge или ADB для короткий. Он широко используется в Android Studio в качестве сопутствующей утилиты командной строки. Разработчики Android также используют его как отдельное решение для ручной установки и тестирования приложений на

Android-смартфоны а также эмулированные устройства Android.

Но АБР может многое сделать, и большая часть этого будет полезна не только разработчикам. Даже если вы не разработчик и читаете эту статью, велика вероятность, что вы один или два раза использовали ADB для загрузить приложение или настроить разрешение. Но это еще не все, для чего можно использовать АБР. Продолжайте читать, чтобы узнать некоторые советы и рекомендации по использованию ADB, о которых вы, возможно, не знали.

Вам необходимо, чтобы на вашем компьютере был запущен и работал ADB. Обязательно прочтите нашу статью о как установить АБР если вам нужна помощь. Если вы используете Windows, вам также необходимо установите соответствующие OEM-драйверы USB для вашего Android-устройства.

Доступ к оболочке

Если вы раньше использовали ADB, возможно, вы привыкли запускать команды в одной строке. Но вы также можете использовать ADB, чтобы открыть оболочку терминала на вашем устройстве и напрямую запускать команды. И это легко!

В терминале или окне командной строки:

adb shell

Затем вас встретит $ символ, с помощью которого вы можете запускать команды прямо на вашем устройстве.

Подключение к нескольким устройствам

ADB может одновременно взаимодействовать с несколькими устройствами. Однако при вводе команд ADB в таких сценариях необходимо указать целевое устройство.

Для этого вам необходимо знать серийный номер целевого устройства. Вы можете получить серийный номер с помощью команды devices:

adb devices

Теперь используйте -s возможность указать серийный номер целевого устройства. Пример:

adb -s <serialnumber> shell

Передача файлов

Для поклонников командной строки ADB предоставляет очень простой способ передачи файлов на ваше устройство Android и обратно. Просто используйте pull команда для копирования файлов и каталогов с устройства и push команда для копирования файлов и каталогов на устройство:

Если вы хотите скопировать файл или каталог с его подкаталогами на устройство Android:

adb push local_path device_path
  • Пример: adb push D:\image.png /sdcard

Следующая команда скопирует файл или каталог с его подкаталогами с устройства Android на хост-компьютер:

adb pull device_path local_path
  • Пример: adb pull /sdcard/backup_April.tar D:\Backup

Ведение журнала

Android Studio предоставляет Окно логкат, который поддерживает отображение журналов с вашего устройства в режиме реального времени. Однако для пакетной обработки это не совсем полезно. К счастью, устройства Android поставляются с командой logcat, доступной через ADB, которую можно использовать для вывода сообщений журнала системы и приложений и вывода их на экран.

Основной синтаксис следующий:

adb logcat

Чтобы узнать больше, ознакомьтесь с нашим руководством по как получить системные журналы, журналы ядра и dmesg на Android.

пасхальные яйца

Google предлагает две изящные пасхалки, связанные с командой logcat.

  1. Первый — лолкот, отсылка к LOLкот мем. Она дает тот же результат, что и обычная команда logcat.
    adb lolcat
  2. Второй — longcat, который эквивалентен команде logcat -v long. Он отображает все поля метаданных и отдельные сообщения пустой строкой.
    adb longcat

Список установленных приложений через ADB

Чтобы просмотреть установленные приложения на вашем устройстве, вы можете использовать следующую команду:

adb shell pm list packages

Это вернет список имен пакетов установленных приложений, каждое из которых находится в отдельной строке с добавлением package:.

Параметры

Есть также несколько опций, которые вы можете использовать для получения более конкретных списков.

  • будет включать путь к базовому APK для каждого приложения, а также имя его пакета.
  • позаботится о том, чтобы все известные пакеты, отличные от APEX, были возвращены.
  • приведет к тому, что команда будет возвращать только отключенные пакеты.
  • приведет к тому, что команда будет возвращать только включенные пакеты.
  • приведет к тому, что команда будет возвращать только системные пакеты.
  • -3 приведет к тому, что команда будет возвращать только сторонние пакеты.
  • будет включать имя установочного пакета для каждого пакета.
  • будет включать UID пакета для каждого пакета.
  • будет включать неустановленные пакеты.
  • --show-код версии будет включать код версии для каждого пакета.
  • --apex-only вернет только пакеты APEX.
  • --uid будет показывать только пакеты с данным UID.
  • --пользователь будет показывать только пакеты, принадлежащие данному идентификатору пользователя.

Установка и удаление приложений через ADB

Это относительно распространенное использование ADB, но все равно о нем стоит упомянуть. Помимо прочего, вы также можете использовать ADB для устанавливать и удалять приложения Android на ваше Android-устройство.

Установка APK

Если на вашем компьютере есть APK-файл, вы можете установить его на свое устройство, выполнив следующие действия:

adbinstall-rsomeapk.apk

Не забудьте заменить someapk.apk полный путь к APK, который вы хотите установить.

Параметры

Существует множество вариантов установки APK через ADB.

  • Опция позволяет ADB устанавливать поверх существующего приложения (т. е. обновлять). В Android Pie и более поздних версиях вам не обязательно указывать этот параметр.
  • для Android Pie и более поздних версий приведет к сбою установки, если приложение уже установлено.
  • Опция позволяет указать имя пакета установщика. Это то, что возвращается, если Android хочет узнать, что установило APK.
  • опция позволяет APK с андроид: testOnly="истина" в его манифесте для установки.
  • Опция позволяет откатить указанный APK до уже установленного приложения. Это работает только в том случае, если обе версии приложения допускают отладку.
  • Опция для Android Marshmallow и более поздних версий автоматически предоставляет все разрешения времени выполнения установленному приложению.

Это не все из них. Если вам нужен полный список, вы можете просмотреть встроенную документацию.

Несколько APK и пакетов

Если у вас есть несколько APK-файлов, которые вы хотите установить одновременно, либо из нескольких приложений, либо потому, что вы устанавливаете пакет приложений, вы можете использовать ADB. install-multiple и install-multi-package функции.

Если все ваши APK предназначены для одного приложения, используйте install-multiple:

adbinstall-multipleapk1.apkapk2.apk ...

В противном случае используйте install-multi-package:

adbinstall-multi-packageapp1.apkapp2.apk ...

Параметры этих команд аналогичны install, но с некоторыми ограничениями. Ознакомьтесь со встроенной документацией ADB, для которой доступны варианты.

Удаление приложения

Для удаления с помощью ADB вам понадобится имя пакета приложения, которое вы хотите удалить. Загляните в раздел, чтобы Список установленных приложений если вы еще этого не сделали.

Как только вы узнаете имя пакета, удалить его будет так же просто, как:

adb uninstall <packagename>

Обычно вы не можете удалить систему или предустановленные приложения с помощью этой команды. Однако вы можете отключить их с помощью ADB. Посмотрите раздел Отключение и включение практически любого приложения для получения подробной информации.

Извлечение APK с помощью ADB

Существует множество причин, по которым вам может потребоваться извлечь APK-файлы приложения. Возможно, вы хотите создать резервную копию для будущего использования или, возможно, он больше не доступен в Интернете, и вы хотите перенести его на другое устройство.

Извлечь приложение с помощью ADB довольно просто. Сначала вам нужно найти имя пакета приложения, которое вы хотите извлечь. Есть несколько способов сделать это, но самый простой обычно — использовать приложение «Настройки» вашего устройства для просмотра список всех установленных приложений, выберите нужное и прокрутите вниз, пока не найдете имя пакета или приложения. ИДЕНТИФИКАТОР.

Получив имя пакета, выполните следующую команду:

adb shell pm path <packagename>

Эта команда вернет путь ко всем APK для этого имени пакета.

Затем вы можете использовать следующую команду, чтобы загрузить каждый APK на свой компьютер:

adb pull /path/to/apk.apk

Резервное копирование и восстановление данных приложения

Хотя Google еще не разработал методологию резервного копирования в один клик в стиле iOS, вы можете использовать ADB для резервного копирования и восстановления установленных приложений вместе с их данными. Однако функциональность далека от совершенства, и Google уже это сделал. пометил функцию как устаревшую.

Резервное копирование

Чтобы создать резервную копию одного приложения с его APK:

adb backup -apk <packagename> -f package_name_backup.ab

Если вы хотите сделать резервную копию всех данных приложения одновременно:

adb backup -f all -all -apk -nosystem

Поскольку модуль восстановления не может выполнять восстановление отдельного приложения, лучше создать резервные копии для конкретного пакета. Следующий фрагмент команды (совместимый с Linux/macOS и подсистемой Windows для Linux) может сделать это за вас:

for APP in $(adb shell pm list packages -3)
do
APP=$( echo${APP} | sed "s/^package://")
adb backup -f ${APP}.backup ${APP}
done

Восстановить

Сначала вам необходимо установить сохраненный APK;

adb install <packagename>.apk

Затем вы можете восстановить его данные:

adbrestorepackage_name_backup.ab

Повторяю, функции резервного копирования и восстановления ADB имеют несколько предостережений, включая переменные результаты в зависимости от ПЗУ.

Перечисление компонентов приложения

Компонентами приложения являются такие вещи, как его действия, BroadcastReceivers, службы и т. д. Иногда полезно знать названия этих компонентов в конкретном приложении, особенно если вы хотите запустить скрытые Activity или отправить трансляцию с конкретными данными.

К сожалению, у ADB нет четкого способа составления списка компонентов приложения. Но это возможно. Выполните следующую команду:

adb shell dumpsys package

Будет возвращена целая куча текста.

  • Пролистайте, пока не найдете Таблица преобразователя активности заголовок, чтобы увидеть действия.
  • Посмотрите ниже Таблица резольверов приемника для широковещательных приемников.
  • Проверить Таблица резольвера служб за услуги.
  • И так далее.

Каждый компонент покажет действие, необходимое для его запуска, имя компонента и, возможно, некоторую дополнительную информацию.

В качестве альтернативы, если вам нужен более простой способ просмотра действий, служб и получателей, вы можете использовать приложение Root Activity Launcher от признанного разработчика XDA. Захари1. Он покажет вам эти компоненты для каждого приложения, а также множество других полезных функций.

Средство запуска корневых действийРазработчик: Закари Уандер

Цена: 0,99.

Скачать

Запуск мероприятий, услуг и приемников вещания

ADB также можно использовать для запуска действий, запуска служб и уведомления BroadcastReceivers. При необходимости вы даже можете указать URI данных и дополнительные функции Intent.

Для запуска компонентов вам понадобится имя компонента, который вы хотите запустить. Вы можете увидеть, как получить это из Перечисление компонентов приложения раздел.

Синтаксис команды для запуска Activity примерно такой:

am start -a <action> -n <component>

Синтаксис команды для запуска службы примерно такой:

am startservice -a <action> -n <component>

Синтаксис команды для уведомления BroadcastReceiver примерно такой:

am broadcast -a <action> -n <component>

В большинстве случаев для действий и служб не требуется явно указывать действие. Обычно он понадобится вам только в том случае, если компонент использует что-то другое, кроме android.intent.action. ОСНОВНОЙ.

Помимо основного синтаксиса, вот как указать больше данных для передачи. Как правило, все значения данных следует заключать в двойные кавычки.

  • позволяет указать URI данных.
  • или --es позволяет указать дополнительную строку.
  • --esn позволяет вам указать дополнительную нулевую строку.
  • --эз используется для указания дополнительного логического значения.
  • --эй используется для указания целочисленного дополнительного значения.
  • --эль предназначен для указания длинного доп.
  • --эф пропустит дополнительный поплавок.
  • --Евросоюз передает дополнительный URI.
  • --ecn может использоваться для указания дополнительного имени компонента.
  • --эйа ,,... передаст значения как дополнительное число Integer[].
  • --eial ,,... передаст значения в виде списка.
  • Те же аргументы массива и списка также работают для длинных чисел, чисел с плавающей запятой и строк. Просто замените я с соответствующей буквой.
  • позволяет указать флаг.

Вы можете использовать еще больше вариантов поведения, поэтому подробности смотрите во встроенной документации.

Отключение и включение практически любого приложения

Системные приложения на Android невозможно удалить, и, к сожалению, многие из них невозможно отключить через «Настройки». Хотя ADB не позволит вам удалить их, он может помочь вам их отключить.

Сначала убедитесь, что вы получили имя пакета приложения, которое хотите отключить. Затем попробуйте эти команды. Если один из них не удался, попробуйте следующий вариант.

  • вечернее отключение
    • Чтобы снова включить, используйте включение вечера
  • pm отключить-пользователь --user 0
    • Чтобы снова включить, используйте включение вечера
  • скрыть в личку
    • Чтобы снова включить, используйте в личку показать
  • вечер приостановить
    • Чтобы снова включить, используйте возобновить работу в вечернее время
  • pm uninstall -k --user 0
    • Чтобы снова включить, используйте установка существующего в личку
      • Этот вариант эффективно удаляет приложение из вашего профиля пользователя. Пока команда на повторное включение должен сработает, нет никакой гарантии, что так и будет. Для восстановления приложения может потребоваться сброс настроек до заводских настроек.
      • Если вы используете несколько профилей пользователей на своем устройстве, обязательно замените 0 в приведенных выше командах фактическим идентификатором пользователя, который у вас есть.

Чтобы узнать больше, ознакомьтесь с нашим руководством по как удалить вирусы оператора и OEM без root-доступа.

Захват скриншотов

Большинство прошивок Android предлагают две удобные утилиты оболочки — screencap и screenrecord — для создания снимков экрана и записи действий на экране соответственно. Вы можете вызвать их прямо из оболочки ADB, чтобы сделать статический снимок экрана или фрагмент видео экрана вашего телефона и сохранить его непосредственно во внутренней памяти устройства.

Синтаксис создания снимка экрана довольно прост:

adb shell screencap /sdcard/screenshot.png

Аналогично, если вам нужно получить динамический снимок экрана, сделайте следующее:

adb shell screenrecord /sdcard/recording.mp4

Как и следовало ожидать, инструмент Screencap довольно прост, тогда как утилита Screenrecord предлагает несколько параметров. Варианты для последнего следующие:

  • --размер ШИРИНАxВЫСОТА
    • Установите разрешение видеофайла (например, «1280x720»). По умолчанию он пытается использовать основное разрешение экрана целевого устройства (если оно поддерживается), а в противном случае возвращается к 1280x720.
  • --скорость передачи данных
    • Установите битрейт видео в битах в секунду. Значение может быть указано в битах или мегабитах, например. «4000000» эквивалентно «4М».
  • --отчет об ошибке
    • Вы можете добавить дополнительную информацию, например временную метку, которая может быть полезна для иллюстрации ошибок.
  • --time-limit ВРЕМЯ
    • Установите максимальное время записи в секундах. По умолчанию/максимум — 180.
  • --display-id идентификатор
    • Укажите идентификатор физического дисплея для записи. По умолчанию установлен основной дисплей. Допустимые идентификаторы дисплея см. в разделе «dumpsys SurfaceFlinger --display-id».
  • --подробный
    • Отображение подробной информации о сеансе записи.

Вы можете еще больше расширить возможности встроенных утилит Android для захвата экрана, мусор. Это решение для зеркалирования экрана с открытым исходным кодом, которое использует возможности ADB.

Передача двоичных данных между ПК и устройством Android

Если вы не хотите создавать полноценную оболочку ADB, но хотите включить оптимизированную передачу двоичных данных между хост-компьютером и целевым устройством Android, вы можете использовать exec-in и exec-out команды.

Несмотря на их длительное существование, команды exec-in и exec-out все еще недокументированы. Они могут привести к повреждению файла из-за того, как разные оболочки обрабатывают входные и выходные данные. Используйте с осторожностью.

Первый помогает вам выполнить команду на Android и передать нефильтрованный ввод консоли в качестве параметра, а второй второй делает прямо противоположное, то есть запускает команду на Android и захватывает ее нефильтрованный двоичный вывод операционной системой хоста.

Пример:

adb exec-out "screencap -p" > "D:\screenshot.png"

При этом будет использоваться screencap Команда Android для создания снимка экрана телефона, но напрямую сохраняет его как скриншот.png в разделе D: хост-компьютера (при условии, что на нем установлена ​​ОС Windows). С другой стороны,

adb exec-in"cd /sdcard && tar -xf -" < "D:\backup.tar"

Это позволит извлечь содержимое файла backup.tar, хранящегося в разделе D: хост-компьютера (под управлением Windows) в корне внутренней памяти устройства Android.


ADB — невероятно мощный инструмент, и он может сделать гораздо больше, чем то, что описано выше. Команды в этой статье — это всего лишь полезная отправная точка. Для более продвинутого использования ознакомьтесь с такими командами, как cmd -l чтобы увидеть различные сервисы, с которыми вы можете взаимодействовать, и ls -l /система/бин чтобы увидеть различные исполняемые файлы команд, доступные в вашем ПЗУ Android.

Другие советы и рекомендации по Android можно найти в наших руководствах на как рутировать свой Android-смартфон, как установить рекавери TWRP, и как установить кастомное ПЗУ на ваше устройство Android.