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

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

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

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

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

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

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

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

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

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

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

adb оболочка

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

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

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

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

adb устройства

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

adb -s <сериалчисло> оболочка

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

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

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

adb push local_path путь_устройства
  • Пример: adb push D:\image.png /sdcard

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

adb тянуть путь_устройства_локальный_путь
  • Пример: adb pull /sdcard/backup_April.tar D:\Backup

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

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

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

АБР logcat

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

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

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

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

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

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

адб оболочка м список пакеты

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

Параметры

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

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

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

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

Установка APK

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

адбустановитькакой-то апк.apk

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

Параметры

Есть куча вариантов установки APK через ADB.

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

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

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

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

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

адбустановка-несколькоapk1.apkapk2.apk ...

В противном случае используйте установка нескольких пакетов:

адбустановка нескольких пакетовприложение1.apkприложение2.apk ...

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

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

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

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

адб удалить <имя пакета>

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

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

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

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

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

путь adb shell pm <имя пакета>

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

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

adb тянуть /путь/к/apk.apk

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

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

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

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

адб резервное копирование -апк <упаковкаимя> -f имя_пакета_backup.ab

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

адб резервное копирование -f все -все -apk-носистема

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

для ПРИЛОЖЕНИЕ в $(adb shell pm список пакетов -3)
делать
ПРИЛОЖЕНИЕ=$( эхо${ПРИЛОЖЕНИЕ} | сед "s/^пакет://")
резервная копия adb -f ${ПРИЛОЖЕНИЕ}.резервное копирование ${ПРИЛОЖЕНИЕ}
сделанный

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

Во-первых, вам нужно установить сохраненный APK;

адб установить <упаковкаимя>.apk

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

адбвосстановитьpackage_name_backup.ab

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

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

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

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

adb shell dumpsys упаковка

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

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

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

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

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

Цена: 0,99.

Скачать

Запуск активностей, сервисов и широковещательных приемников

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

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

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

начинаю -а <действие><компонент>

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

я запускаю службу -a <действие><компонент>

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

я в эфире -а <действие><компонент>

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

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

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

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

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

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

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

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

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

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

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

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

Скриншот оболочки adb /sdcard/screenshot.png

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

adb shell screenrecord /sdcard/recording.mp4

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

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

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

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

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

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

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

Пример:

адб исполнитель-вне "скриншот -p" > "Д:\скриншот.png"

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

адб исполнитель-в"cd /sdcard && tar -xf -" < "D:\backup.tar"

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


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

Чтобы узнать о других поездках и галочках Android, ознакомьтесь с нашими руководствами на как получить root права на свой Android-смартфон, как установить рекавери тврп, и как установить пользовательскую прошивку на Android-устройство.