1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/awesome-lib-awesome-adb

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.en.md

Android Debug Bridge (ADB) — это набор инструментов, включённых в пакет Android SDK. Это не только мощный инструмент для разработчиков и тестировщиков Android, но и хорошая игрушка для поклонников Android.

Этот репозиторий постоянно обновляется. Приветствуются запросы на включение изменений и сообщения об ошибках. Если вы считаете, что этот ресурс полезен, вы можете поставить ему «звёздочку» и при необходимости легко вернуться сюда.

Примечание: некоторые команды могут зависеть от версии системы Android или ПЗУ.

Другие языки: китайский (README.md).


Содержание

Базовое использование

Синтаксис команд

Выбор оборудования для команды

Запуск/остановка

Просмотр версии ADB

Запустить adbd от имени суперпользователя

Назначить сетевой порт сервера ADB

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

Запрос подключённого устройства / симулятора

USB-подключение

Беспроводное подключение (Android 11+)

Беспроводное подключение (необходимо использовать USB-кабель)

Беспроводное подключение (без использования USB-кабеля)

Управление приложениями

Проверить список

Все приложения

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

Сторонние приложения

Приложения с указанной строкой в названии пакета

Установить APK

Удаление

Отключить или включить приложения

Отключить приложения

Включить приложения

Очистить кэш данных приложения

Просмотреть активность приёма

Посмотреть запущенные службы

Запросить подробную информацию о пакете

Запросить путь установки приложения

Взаимодействие с приложениями

Запустить приложение / запустить действие

Начать службу

Остановить службу

Отправить широковещательную рассылку

Принудительно остановить приложение

Урезать память

Файловое управление

Скопировать файлы с устройства на компьютер

Скопировать файлы с компьютера на устройство

Аналоговые клавиши / входы

Кнопка питания

Меню

Клавиша HOME

Возвратная клавиша

Регулятор громкости

Управление мультимедиа

Вкл./выкл. экран

Сдвинуть, чтобы разблокировать

Введите текст

Просмотр журнала

Журнал Android

Фильтр журнала по уровню

Фильтр по тегу и уровню журнала

Формат журнала

Очистить журнал

Журнал ядра

Просмотр информации об устройстве

Модель

Состояние батареи

Разрешение экрана

Плотность экрана

Параметры дисплея

android_id

IMEI

Версия системы Android

IP-адрес

MAC-адрес

Информация о процессоре

Память ## Базовое использование

Синтаксис команд

Базовый синтаксис команды adb выглядит следующим образом:

adb [-d|-e|-s <serialNumber>] <команда>

Если у вас подключено только одно устройство/эмулятор, вы можете опустить часть [-d | -e | -s <serialNumber>] и использовать непосредственно adb <command>.

Выбор оборудования для команды

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

Параметр Значение
-d Указывает текущее единственное USB-соединение с Android-устройством в качестве цели команды
-e Указывает текущий единственный симулятор в качестве цели выполнения команды
-s <SerialNumber> Указывает номер устройства, соответствующий serialNumber/симулятору, в качестве цели команды

В случае подключения нескольких устройств/симуляторов чаще используется параметр -s <serialNumber>. Получить serialNumber можно с помощью команды adb devices. Например:

$ adb devices

List of devices attached
cf264b8f    device
emulator-5554   device

Вывод cf264b8f и emulator-5554 — это serialNumber. Например, на этот раз я хочу указать оборудование cf264b8f, чтобы выполнить команду adb для получения разрешения экрана:

adb -s cf264b8f shell wm size

При использовании нескольких устройств/симуляторов для указания целевого устройства для команды описание будет упрощено и не будет повторяться.

Запуск/остановка

Команда запуска сервера adb:

adb start-server

(Обычно нет необходимости выполнять эту команду вручную, при выполнении команды adb сервер adb запускается автоматически.) Остановка сервера adb:

adb kill-server

Просмотр версии adb:

Команда:

adb version

Пример вывода:

Android Debug Bridge version 1.0.36
Revision 8f855a3d9b35-android

Запуск adbd от имени суперпользователя:

Принцип работы заключается в том, что сервер adb и клиент adb на стороне телефона и ПК устанавливают соединение, после чего клиент adb через сервер adb пересылает команды для выполнения.

Если для выполнения некоторых команд adbd требуются права суперпользователя, то нельзя напрямую использовать команду adb xxx. В этом случае можно выполнить команду adb shell, а затем su, но это также позволяет adbd выполнять команды с правами суперпользователя.

Команда:

adb root

Нормальный вывод:

restarting adbd as root

Теперь запустите adb shell и посмотрите, не превратилась ли строка приглашения в `#?

После того как некоторые модели телефонов не позволяют adbd выполнить команды с привилегиями суперпользователя с помощью команды adb root, например, Samsung, появится сообщение «adbd не может работать с правами root в производственных сборках», тогда вы можете установить adbd Insecure и попробовать adb root.

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

Назначение порта сервера adb:

Команда:

adb -P <port> start-server

По умолчанию порт равен 5037.

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

Запрос подключённого устройства / симулятора

Команда:

adb devices

Пример вывода:

List of devices attached
cf264b8f    device
emulator-5554   device

Формат вывода: [serialNumber] [state], где serialNumber — это SN, а state — одна из следующих категорий:

  • Offline — указывает, что устройство не подключено к успеху или не отвечает.
  • Device — устройство подключено. Обратите внимание, что это состояние не определяет, была ли система Android полностью активирована и работает ли устройство во время запуска экземпляра устройства, к которому можно подключиться до adb, но после загрузки системы, прежде чем она станет работоспособной.
  • No device — нет подключения устройства / эмулятора.

Вывод показывает текущее подключение двух устройств / симуляторов, cf264b8f и emulator-5554 — их SN. Как видно из названия emulator-5554, это эмулятор Android.

Общие аварийные сигналы:

  1. Нет успешного подключения устройства / эмулятора.
List of devices attached
  1. Устройство / эмулятор не подключено к adb или не отвечает.
List of devices attached
cf264b8f offline

USB-подключение

Для нормального использования adb при подключении через USB необходимо убедиться, что:

  1. Состояние оборудования в норме. Включая устройства Android в нормальном состоянии питания, USB-кабель и интерфейс целы.
  2. На устройствах Android включены режим разработчика и отладка по USB. Вы можете перейти в «Настройки» — «Параметры разработчика» — «Отладка по USB». Если вы не можете найти параметры разработчика в настройках, вам нужно сделать это через яйцо: в «Настройках» — «Об устройстве» непрерывно нажмите «Версия» 7 раз.
  3. Драйвер устройства в норме. Это касается Linux и Mac OS X, Windows, вероятно, столкнётся с необходимостью установки драйверов, это можно подтвердить в разделе «Компьютер» — «Свойства», «Диспетчер устройств», чтобы увидеть, есть ли жёлтый восклицательный знак или вопросительный знак на соответствующем оборудовании, если нет, объясните, что состояние вождения было хорошим. В противном случае вы можете сначала загрузить программу мобильного помощника класса для установки драйвера.
  4. Статус после подтверждения через USB-соединение компьютеров и устройств.
adb devices

Если вы видите

xxxxxx device

Описание Подключение успешно.

Беспроводное подключение (Android11+)

Doc in Android developers

Android 11 и выше поддерживают развёртывание и отладку вашего приложения удалённо с рабочей станции с использованием Android Debug Bridge (adb). Например, вы можете развернуть своё отлаживаемое приложение на нескольких удалённых Беспроводное подключение (без физического подключения устройства через USB)

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

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

  1. Обновите до последней версии SDK Platform-Tools.

  2. Подключите Android-устройство к компьютеру с запущенным adb, подключённому к той же локальной сети, например, к тому же Wi-Fi.

  3. Включите опцию «Wireless debugging».

  4. В диалоговом окне с вопросом «Разрешить беспроводную отладку в этой сети?» нажмите «Разрешить».

  5. Выберите «Сопряжение устройства с кодом сопряжения». Запишите код сопряжения, IP-адрес и номер порта, отображаемые на устройстве.

  6. На рабочей станции откройте терминал и перейдите в android_sdk/platform-tools.

  7. Выполните команду adb pair ipaddr:port. Используйте IP-адрес и порт из шага 5.

  8. При появлении запроса введите полученный в шаге 5 код сопряжения. Появится сообщение о том, что ваше устройство успешно сопряжено.

none
Enter pairing code: xxxxxx
Successfully paired to ...
  1. (Только для Linux или Microsoft Windows) Выполните команду adb connect ipaddr:port. Используйте IP-адрес и порт в разделе «Wireless debugging».

Беспроводное соединение (необходимо использовать кабель USB)

Помимо подключения через USB к компьютеру для использования adb также можно использовать беспроводное соединение — хотя процесс подключения также требует использования USB, но после успешного подключения к вашему устройству можно избавиться от ограничений кабеля USB в пределах определённого диапазона!

Шаги:

  1. Подключите Android-устройство для запуска adb к компьютеру, подключённому к той же локальной сети, например, к одному и тому же Wi-Fi.

  2. Устройство подключено к компьютеру через кабель USB.

Убедитесь, что подключение прошло успешно (вы можете запустить adb devices, чтобы проверить, отображается ли устройство в списке).

  1. Разрешите устройству прослушивать TCP/IP-соединения через порт 5555:
adb tcpip 5555
  1. Отсоедините USB-соединение.

  2. Найдите IP-адрес устройства.

Обычно его можно найти в «Настройках» — «О телефоне» — «Информация о состоянии» — «IP-адрес», также можно использовать следующую команду adb в методе Lane команды [Просмотр информации об устройстве — IP-адрес][1].

  1. Подключитесь к устройству через IP-адрес.
adb connect <device-ip-address>

Здесь <device-ip-address> — это IP-адрес устройства, найденный на предыдущем шаге.

  1. Подтвердите статус подключения.
adb devices

Если вы видите

<device-ip-address>:5555 device

Описание Подключение успешно.

Если не удаётся подключиться, убедитесь, что Android-устройства и компьютер подключены к одному Wi-Fi, затем снова выполните команду adb connect <device-ip-address>;

если это не сработает, перезапустите adb с помощью команды adb kill-server и попробуйте снова.

Беспроводное подключение

команда:

adb disconnect <device-ip-address>

Беспроводное подключение (без использования кабеля USB)

Примечание: вам нужны права root.

В методе «беспроводное подключение (необходимо использовать USB-кабель)», описанном в официальных документах, для включения беспроводного подключения требуется помощь USB-кабеля.

Поскольку мы хотим добиться беспроводного соединения, можем ли мы сделать всё это по беспроводной связи? Ответ — да.

  1. Установите эмулятор терминала на Android-устройстве.

Оборудование уже установлено, этот шаг можно пропустить. Я использую адрес загрузки эмулятора терминала: Эмулятор терминала для Android.

  1. Запустите Android-устройство и компьютер adb, подключённый к одной и той же локальной сети, например, к одному и тому же Wi-Fi.

  2. Откройте эмулятор терминала на вашем Android-устройстве и выполните последовательность команд:

su
setprop service.adb.tcp.port 5555
  1. Найдите IP-адрес Android-устройства.

Обычно он находится в «Настройках» — «Об устройстве» — «Информация о состоянии». Не удалось установить приложение:

Ошибка Описание
INSTALL_FAILED_REPLACE_COULDNT_DELETE Невозможно удалить при замене
INSTALL_FAILED_DEXOPT Ошибка валидации оптимизации dex или нехватка места
INSTALL_FAILED_OLDER_SDK Версия системы устройства ниже требований приложения
INSTALL_FAILED_CONFLICTING_PROVIDER В приложении уже существует объект с таким же именем в контент-провайдере
INSTALL_FAILED_NEWER_SDK Версия системы оборудования выше требований приложения
INSTALL_FAILED_TEST_ONLY Только для тестовых приложений, но когда вы устанавливаете, параметр -t не указан
INSTALL_FAILED_CPU_ABI_INCOMPATIBLE Содержит несовместимый двоичный интерфейс приложения процессора устройства для нативного кода
INSTALL_FAILED_MISSING_FEATURE Приложение использует функции устройства, которые недоступны
INSTALL_FAILED_CONTAINER_ERROR Ошибка доступа к SDCard
INSTALL_FAILED_INVALID_INSTALL_LOCATION Не может быть установлен в указанное местоположение
INSTALL_FAILED_MEDIA_UNAVAILABLE Место установки недоступно
INSTALL_FAILED_VERIFICATION_TIMEOUT Тайм-аут установки, проверка
INSTALL_FAILED_VERIFICATION_FAILURE Сбой проверки установочного пакета
------------------------------------------------------------------------------------
INSTALL_FAILED_PACKAGE_CHANGED вызывающая прикладная программа ожидает несогласованности
INSTALL_FAILED_UID_CHANGED ранее установленное приложение, и это назначение UID несогласовано
INSTALL_FAILED_VERSION_DOWNGRADE уже установлено приложение позже
INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE установлена целевая поддержка среды выполнения SDK для разрешений приложения с тем же именем, для установки версия среды выполнения не поддерживает разрешение
INSTALL_PARSE_FAILED_NOT_APK указанный путь не является файлом или не заканчивается на .apk
INSTALL_PARSE_FAILED_BAD_MANIFEST неразрешенный файл AndroidManifest.xml
INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION синтаксический анализатор встречает исключение
INSTALL_PARSE_FAILED_NO_CERTIFICATES установочный пакет не подписан
INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES уже установлено приложение, и подписанные APK-файлы несовместимы
INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING встречается при анализе файла APK CertificateEncodingException
INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME в файле манифеста нет или неверно указано имя пакета
INSTALL_PARSE_FAILED_BAD_SHARED_USER_ID в файле манифеста указан неверный общий идентификатор пользователя
INSTALL_PARSE_FAILED_MANIFEST_MALFORMED встречается при разборе ошибки структуры файла манифеста
INSTALL_PARSE_FAILED_MANIFEST_EMPTY в файле манифеста не удалось найти рабочую метку (инструментарий или приложение)
INSTALL_FAILED_INTERNAL_ERROR установка завершается неудачно из-за системных проблем
INSTALL_FAILED_USER_RESTRICTED Пользователи ограничены в установке приложений.
INSTALL_FAILED_DUPLICATE_PERMISSION приложение пытается определить существующее имя разрешения
INSTALL_FAILED_NO_MATCHING_ABIS приложения включают двоичный интерфейс приложения устройства, который не поддерживает собственный код
INSTALL_CANCELED_BY_USER приложения, установленные на устройстве, требуют подтверждения, но не управляют устройством или точкой отмены
INSTALL_FAILED_ACWF_INCOMPATIBLE Приложения несовместимы с устройством
INSTALL_FAILED_TEST_ONLY APK-файл собран через Android Studio «RUN»
INSTALL_FAILED_ABORTED: User rejected permissions Приложения, установленные на устройстве, содержат предупреждения о рисках, требуют подтверждения, но управление устройством не осуществляется или отменено
Не содержит AndroidManifest.xml Недействительный файл APK
Является недействительным ZIP-файлом Недействительный файл APK
Оффлайн Устройство не подключено успешно
Несанкционированный доступ Несанкционированное устройство позволяет выполнять отладку
Ошибка: устройство не найдено Неудачное подключение оборудования
-------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------
Ошибка протокола Устройство отключено
Первое устройство с успешным подключением через ADB
Неизвестная опция: -s Android 2.2 не поддерживает следующую установку на SD-карту
Не используйте параметры -s
На устройстве не осталось свободного места Недостаток пространства
Очистить пространство
Отказано в доступе… SD-карта… SD-карта недоступна
Подписи не совпадают с ранее установленной версией; игнорируется! Уже установлено это приложение, но подписи не совпадают
Удалить предыдущую установку, затем установить эту

Введение в принцип работы команды Adb install

Команда Adb install фактически состоит из трёх шагов:

  1. Отправляет файлы APK в /data/local/tmp.

  2. Вызывает установку через pm install.

  3. Удаляет соответствующий файл APK из /data/local/tmp.

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

Удаление

команда:

adb uninstall [-k] <packagename>

<Packagename> представляет имя пакета приложения, необязательный параметр -k указывает на удаление приложения, но сохранение каталогов данных и кэша.

Пример команды:

adb uninstall com.qihoo360.mobilesafe

Удаление представляет собой 360 мобильных стражей.

Отключение или включение приложений

Список всех включённых приложений:

adb shell pm list packages -e

Отключение приложений

команда:

adb shell pm disable-user <packagename>

Пример команды:

adb shell pm disable-user com.qihoo360.mobilesafe

Включение приложений

команда:

adb shell pm enable <packagename>

Пример команды:

adb shell pm enable com.qihoo360.mobilesafe

Очистка кэша и данных приложения

команда:

adb shell pm clear <packagename>

<Packagename> представляет название пакета приложения. Эффект этой команды эквивалентен информации о приложении на экране настроек, где нажаты кнопки «Очистить кэш» и «Очистить данные».

Пример команды:

adb shell pm clear com.qihoo360.mobilesafe

Очистка данных и кэша 360 мобильных стражей.

Просмотр активности приёма

команда:

adb shell dumpsys activity activities | grep mResumedActivity

Пример вывода:

mResumedActivity: ActivityRecord{8079d7e u0 com.cyanogenmod.trebuchet/com.android.launcher3.Launcher t42}

Где com.cyanogenmod.trebuchet / com.android.launcher3.Launcher — текущая активность на переднем плане.

Приведённая выше команда может быть недействительной в Windows. Можно попробовать использовать adb shell dumpsys activity activities | findstr mResumedActivity или adb shell "dumpsys activity activities | grep mResumedActivity".

Просмотр запущенных служб

команда:

adb shell dumpsys activity services [<packagename>]
``` **Параметр `<packagename>` является необязательным.** Команда с параметром `<packagename>` выведет список служб, связанных с этим именем пакета, а команда без параметра `<packagename>` — все службы.

Полное имя пакета указывать не обязательно. Например, `adb shell dumpsys activity services org.mazhuang` выведет службы, связанные с `org.mazhuang.demo1`, `org.mazhuang.demo2` и `org.mazhuang123` и т. д.

### Запрос подробной информации о пакете

Команда:

```sh
adb shell dumpsys package <packagename>

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

<packagename> – это имя пакета приложения.

Пример вывода:

Таблица распознавателей активности:
  Действия без данных:
      android.intent.action.MAIN:
        5b4cba8 org.mazhuang.guanggoo/.SplashActivity filter 5ec9dcc
          Действие: «android.intent.action.MAIN»
          Категория: «android.intent.category.LAUNCHER»
          AutoVerify=false

Зарегистрированные поставщики контента:
  org.mazhuang.guanggoo/com.tencent.bugly.beta.utils.BuglyFileProvider:
    Provider{7a3c394 org.mazhuang.guanggoo/com.tencent.bugly.beta.utils.BuglyFileProvider}

Поставщики контента:
  [org.mazhuang.guanggoo.fileProvider]:
    Provider{7a3c394 org.mazhuang.guanggoo/com.tencent.bugly.beta.utils.BuglyFileProvider}
      applicationInfo=ApplicationInfo{7754242 org.mazhuang.guanggoo}

Менеджер наборов ключей:
  [org.mazhuang.guanggoo]
      Наборы ключей подписи: 501

Пакеты:
  Пакет [org.mazhuang.guanggoo] (c1d7f):
    Идентификатор пользователя = 10394
    pkg = Package{55f714c org.mazhuang.guanggoo}
    Путь кода = /data/app/org.mazhuang.guanggoo-2
    Путь ресурса = /data/app/org.mazhuang.guanggoo-2
    LegacyNativeLibraryDir = /data/app/org.mazhuang.guanggoo-2/lib
    Основной Abi процессора = null
    Вторичный Abi процессора = null
    Код версии = 74 minSdk = 15 targetSdk = 25
    Название версии = 1.1.74
    Сплиты = [base]
    Версия подписи apk = 2
    Информация о приложении = ApplicationInfo{7754242 org.mazhuang.guanggoo}
    Флаги = [HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP]
    Частные флаги = [RESIZEABLE_ACTIVITIES]
    Каталог данных = /data/user/0/org.mazhuang.guanggoo
    Поддержка экранов = [small, medium, large, xlarge, resizeable, anyDensity]
    Отметка времени = 2017-10-22 23:50:53
    Время первой установки = 2017-10-22 23:50:25
    Последнее обновление = 2017-10-22 23:50:55
    Имя пакета установщика = com.miui.packageinstaller
    Подписи = PackageSignatures{af09595 [53c7caa2]}
    Разрешения на установку фиксированы = true статус установки = 1
    Флаги pkg = [HAS_CODE ALLOW_CLEAR_USER_DATA ALLOW_BACKUP]
    Запрошенные разрешения:
      android.permission.READ_PHONE_STATE
      android.permission.INTERNET
      android.permission.ACCESS_NETWORK_STATE
      android.permission.ACCESS_WIFI_STATE
      android.permission.READ_LOGS
      android.permission.WRITE_EXTERNAL_STORAGE
      android.permission.READ_EXTERNAL_STORAGE
    Разрешения установки:
      android.permission.INTERNET: предоставлено = true
      android.permission.ACCESS_NETWORK_STATE: предоставлено = true
      android.permission.ACCESS_WIFI_STATE: предоставлено = true
    Пользователь 0: ceDataInode = 1155675 установлен = true скрыт = false приостановлен = false остановлен = true не запущен = false включен = 0
      gids = [3003]
      Разрешения во время выполнения:
        android.permission.READ_EXTERNAL_STORAGE: предоставлено = true
        android.permission.READ_PHONE_STATE: предоставлено = true
        android.permission.WRITE_EXTERNAL_STORAGE: предоставлено = true
    Пользователь 999: ceDataInode = 0 установлен = false скрыт = false приостановлен = false остановлен = true не запущен = true включен = 0
      gids = [3003]
      Разрешения во время выполнения:

Состояние Dexopt:
  [org.mazhuang.guanggoo]
    Набор инструкций: arm64
      Путь: /data/app/org.mazhuang.guanggoo-2/base.apk
      Статус: /data/app/org.mazhuang.guanggoo-2/oat/arm64/base.odex [compilation_filter=speed-profile, статус=kOatUpToDate]

Запрос пути установки приложения

Команда:

adb shell pm path <PACKAGE>

Вывод показывает путь установки приложения.

Пример вывода:

adb shell pm путь
``` ## Взаимодействие с приложениями

Наиболее часто используемый синтаксис для взаимодействия с приложениями:
```sh
am <команда>

Общие команды для <команда>:

Команда Использование
start [параметры] <INTENT> Запуск активности, указанной в <INTENT>
startservice [параметры] <INTINT> Запуск сервиса, указанного в <INTINT>
broadcast [параметры] <INTENT> Отправка широковещательного сообщения <INTENT>
force-stop <имя_пакета> Принудительная остановка всего, что связано с <имя_пакета>

<INTENT> — гибкий параметр, соответствующий Intent в приложении.

Параметры для <INTENT>:

Параметр Значение
-a <ACTION> Указание действия намерения, например, android.intent.action.VIEW. Можно указать только один раз.
-c <CATEGORY> Указание категории намерения, например, android.intent.category.APP_CONTACTS
-n <COMPONENT> Указание имени компонента с префиксом имени пакета для создания явного намерения, например, com.example.app/.ExampleActivity

Есть несколько параметров для добавления данных в <INTENT>, аналогичных extra для Bundle:

Параметр Значение
--esn <EXTRA_KEY> null значение (только имя ключа)
`-e --es <EXTRA_KEY> <EXTRA_STRING_VALUE>`
--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> логическое значение
--ei <EXTRA_KEY> <EXTRA_INT_VALUE> целочисленное значение
--el <EXTRA_KEY> <EXTRA_LONG_VALUE> длинное значение
--ef <EXTRA_KEY> <EXTRA_FLOAT_VALUE> значение с плавающей точкой
--eu <EXTRA_KEY> <EXTRA_URI_VALUE> URI
--ecn <EXTRA_KEY> <EXTRA_COMPONENT_NAME_VALUE> имя компонента
--eia <EXTRA_KEY> <EXTRA_INT_VALUE> [, <EXTRA_INT_VALUE ...] массив целых чисел
--ela <EXTRA_KEY> <EXTRA_LONG_VALUE> [, <EXTRA_LONG_VALUE ...] массив длинных значений

Запуск приложения / запуск активности

запуск с именем активности

Синтаксис:

adb shell am start [параметры] <INTENT>

Например:

adb shell am start -n com.tencent.mm/.ui.LauncherUI

Команда выше означает запуск стартовой активности WeChat.

adb shell am start -n org.mazhuang.boottimemeasure/.MainActivity --es "toast" "hello, world"

Команда выше означает запуск MainActivity приложения с именем пакета org.mazhuang.boottimemeasure с дополнительной строковой информацией (ключ — «toast», значение — «hello, world»).

запуск без имени активности

Синтаксис:

adb shell monkey -p <имя_пакета> -c android.intent.category.LAUNCHER 1

Например:

adb shell monkey -p com.tencent.mm -c android.intent.category.LAUNCHER 1

Команда выше означает запуск стартовой активности WeChat.

Запуск службы

Синтаксис:

adb shell am **Запуск сервиса**

startservice [options] <INTENT>

Например:

adb shell am startservice -n com.tencent.mm/.plugin.accountsync.model.AccountAuthenticatorService

Эта команда означает запуск сервиса из WeChat.

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

adb shell am startservice -n com.android.systemui/.SystemUIService

Остановка сервиса

Синтаксис:

adb shell am stopservice [options] <INTENT>

Отправка широковещательного сообщения

Синтаксис:

adb shell am broadcast [options] <INTENT>

Широковещательное сообщение может быть отправлено всем компонентам или указанному компоненту.

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

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED

Другой пример отправки широковещательного сообщения с BOOT_COMPLETED только org.mazhuang.boottimemeasure / .BootCompletedReceiver:

adb shell am broadcast -a android.intent.action.BOOT_COMPLETED -n org.mazhuang.boottimemeasure/.BootCompletedReceiver

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

Можно отправлять как системные предопределённые, так и пользовательские широковещательные сообщения. Ниже приведены некоторые системные предопределённые широковещательные намерения и триггеры:

Действие Триггер
android.net.conn.CONNECTIVITY_CHANGE изменения подключения к сети
android.intent.action.SCREEN_ON включение экрана
android.intent.action.SCREEN_OFF выключение экрана
android.intent.action.BATTERY_LOW низкий заряд батареи, соответствующий системному диалогу «Низкий заряд»
android.intent.action.BATTERY_OKAY батарея в порядке после того, как была разряжена
android.intent.action.BOOT_COMPLETED завершение загрузки устройства
android.intent.action.DEVICE_STORAGE_LOW состояние нехватки памяти на устройстве
android.intent.action.DEVICE_STORAGE_OK состояние нехватки памяти на устройстве больше не существует
android.intent.action.PACKAGE_ADDED установлено новое приложение
android.net.wifi.STATE_CHANGE изменение статуса Wi-Fi
android.net.wifi.WIFI_STATE_CHANGED Wi-Fi включён, отключён, включается, отключается или неизвестно
android.intent.action.BATTERY_CHANGED изменение уровня заряда батареи
android.intent.action.INPUT_METHOD_CHANGED изменение системного метода ввода
android.intent.action.ACTION_POWER_CONNECTED подключение внешнего питания к устройству
android.intent.action.ACTION_POWER_DISCONNECTED отключение внешнего питания от устройства
android.intent.action.DREAMING_STARTED система переходит в спящий режим
android.intent.action.DREAMING_STOPPED система выходит из спящего режима
android.intent.action.WALLPAPER_CHANGED смена обоев
android.intent.action.HEADSET_PLUG проводная гарнитура подключена или отключена
--- -----------------------------------------------------------
26 Кнопка включения питания
27 съёмка (в приложении камеры)
64 Открыть браузер
82 кнопка меню
85 воспроизведение / пауза
86 остановить воспроизведение
87 воспроизвести следующее
88 воспроизведено на
122 Переместить курсор в начало или верх списка
123 Переместить курсор в конец строки или вниз списка
126 возобновить воспроизведение
127 приостановить воспроизведение
164 отключить звук
176 открыть настройки системы
187 переключение приложений
207 открыть контакты
208 открыть календарь
209 открыть музыку
210 открыть калькулятор
220 уменьшить яркость экрана
221 увеличить яркость экрана
223 перевести систему в спящий режим
224 включить экран
231 открыть голосовой помощник
276 если нет wakelock, разрешить системе перейти в спящий режим

Вот несколько примеров использования команды input.

Кнопка включения

Команда:

adb shell input keyevent 26

Эквивалентно нажатию кнопки включения.

Меню

Команда:

adb shell input keyevent 82

Клавиша HOME

Команда:

adb shell input keyevent 3

Клавиша возврата

Команда:

adb shell input keyevent 4

Регулировка громкости

Увеличить громкость:

adb shell input keyevent 24

Уменьшить громкость:

adb shell input keyevent 25

Отключить звук:

adb shell input keyevent 164

Управление медиа

Воспроизведение / Пауза:

adb shell input keyevent 85

Остановить воспроизведение:

adb shell input keyevent 86

Воспроизвести следующую песню:

adb shell input keyevent 87

Воспроизведено на одном устройстве:

adb shell input keyevent 88

Возобновить воспроизведение:

adb shell input keyevent 126

Приостановить воспроизведение:

adb shell input keyevent 127

Включить / выключить экран

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

Включить экран:

adb shell input keyevent 224

Выключить экран:

adb shell input keyevent 223

Разблокировка свайпом

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

Команда (параметры модели Nexus 5, например, проведите пальцем вверх, чтобы разблокировать):

adb shell input swipe 300 1000 300 500

Параметры 3001000300 представляют начальную координату x начальной точки, координату y конечной точки, координату x конечной точки и координату y конечной точки.

Ввод текста

Когда фокус находится в текстовом поле, вы можете ввести текст с помощью команды input.

Команда:

adb shell input text hello

Слово «hello» теперь появится в текстовом поле.

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

Затем выполните команды:

# 1. Установите текущий метод ввода на ADBKeyBoard
adb shell ime set com.android.adbkeyboard/.AdbIME   

# 2. Введите китайский
adb shell am broadcast -a ADB_INPUT_TEXT --es msg '你好'

Просмотр журнала

Журнал Android Система разделена на две части: базовое ядро Linux выводит журнал в /proc/kmsg, а Android — в /dev/log.

Журнал Android

Формат:

[adb] logcat [<option>] ... [<filter-spec>] ...

Общие способы использования перечислены ниже:

Фильтрация журнала по уровню

Журнал Android делится на следующие уровни:

  • V — Verbose (самый низкий уровень вывода);
  • D — Debug;
  • I — Info;
  • W — Warning;
  • E — Error;
  • F — Fatal;
  • S — Silent (самый высокий уровень, то, что не выводится).

Будет выведен журнал с уровнем, указанным или выше.

Например, команда:

adb logcat *:W

выведет журналы Warning, Error, Fatal и Silent.

(Обратите внимание: тег * должен быть заключён в двойные кавычки, например, adb logcat "*:W", иначе будет выдана ошибка no matches found *:W.)

Фильтрация по тегу и уровню журнала

Фильтры представляют собой серию <tag>[:priority].

Например, команда:

adb logcat ActivityManager:I MyApp:D *:S

означает вывод журнала с тегом ActivityManager выше уровня журналов Info, вывод журнала Debug выше уровня тега MyApp и вывод других тегов на уровне Silent (то есть скрывает логирование других тегов).

Формат журнала

Можно использовать опцию adb logcat -v <format>, чтобы указать формат вывода журнала.

Поддерживаются следующие форматы <format>:

  • brief — формат по умолчанию:
    <priority>/<tag>(<pid>): <message>

Пример:

D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
  • process — формат:
    <priority>(<pid>) <message>

Пример:

D( 1785) Disconnected process message: 10, size: 0  (HeadsetStateMachine)
  • tag — формат:
    <priority>/<tag>: <message>

Пример:

D/HeadsetStateMachine: Disconnected process message: 10, size: 0
  • raw — формат:
    <message>

Пример:

Disconnected process message: 10, size: 0
  • time — формат:
    <datetime> <priority>/<tag>(<pid>): <message>

Пример:

08-28 22:39:39.974 D/HeadsetStateMachine( 1785): Disconnected process message: 10, size: 0
  • threadtime — формат:
    <datetime> <pid> <tid> <priority> <tag>: <message>

Пример:

08-28 22:39:39.974  1785  1832 D HeadsetStateMachine: Disconnected process message: 10, size: 0
  • long — формат:
    [ <datetime> <pid>:<tid> <priority>/<tag> ]
    <message>

Пример:

[ 08-28 22:39:39.974  1785: 1832 D/HeadsetStateMachine ]
Disconnected process message: 10, size: 0

Указанный формат можно использовать одновременно с вышеуказанным фильтром. Например:

adb logcat -v long ActivityManager:I *:S

Очистка журнала

adb logcat -c

Журнал ядра

Команда:

adb shell dmesg

Пример вывода:

<6>[14201.684016] PM: noirq resume of devices complete after 0.982 msecs
<6>[14201.685525] PM: early resume of devices complete after 0.838 msecs
<6>[14201.753642] PM: resume of devices complete after 68.106 msecs
<4>[14201.755954] Restarting tasks ... done.
<6>[14201.771229] PM: suspend exit 2016-08-28 13:31:32.679217193 UTC
<6>[14201.872373] PM: suspend entry 2016-08-28 13:31:32.780363596 UTC
<6>[14201.872498] PM: Syncing filesystems ... done.

В скобках [14201.684016] время представляет момент начала работы ядра в секундах.

С помощью журнала ядра можно делать некоторые вещи, такие как измерение времени загрузки ядра. Freeing init memory — это время перед строкой после запуска системы, в журнале ядра.

Просмотр информации об устройстве

Модель

Команда:

adb shell getprop ro.product.model

Образец вывода:

Nexus 5

Состояние батареи

Команда:

adb shell dumpsys battery

Образец вывода:

Current Battery Service state:
  AC powered: false
  USB powered: true
  Wireless powered: false
  status: 2
  health: 2
  present: true
  level: 44
  scale: 100
  voltage: 3872
  temperature: 280
  technology: Li-poly

Scale означает максимальное значение level, а level означает текущий уровень заряда батареи. Вывод | Имя сетевого подключения | Статус подключения | IP-адрес | MAC-адрес | | --- | --- | --- | ---| | 10.129.160.99/20 | UP | | f8:a9:d0:17:42:4d | | lo | UP | 127.0.0.1/8 | 00:00:00:00:00:00 | | p2p0 | UP | 0.0.0.0/0 | fa:a9:d0:17:42:4d | | sit0 | DOWN | 0.0.0.0/0 | 00:00:00:00:00:00 | | rmnet0 | DOWN | 0.0.0.0/0 | 00:00:00:00:00:00 | | rmnet1 | DOWN | 0.0.0.0/0 | 0000:00:00:00:00:00 | | rmnet3 | DOWN | 0.0.0.0/0 | 00:00:00:00:00:00 | | rmnet2 | DOWN | 0.0.0.0/0 | 00:00:00:00:00:00 | | rmnet4 | DOWN | 0.0.0.0/0 | 00:00:00:00:00:00 | | rmnet6 | DOWN | 0.0.0.0/0 | 00:00:00:00:00:00 | | rmnet5 | DOWN | 0.0.0.0/0 | 00:00:00:00:00:00 | | rmnet7 | DOWN | 0.0.0.0/0 | 00:00:00:00:00:00 | | rev_rmnet3 | DOWN | 0.0.0.0/0 | 4e:b7:e4:2e:17:58 | | rev_rmnet2 | DOWN | 0.0.0.0/0 | 4e:f0:c8:bf:7a:cf | | rev_rmnet4 | DOWN | 0.0.0.0/0 | a6:c0:3b:6b:c4:1f | | rev_rmnet6 | DOWN | 0.0.0.0/0 | 66:bb:5d:64:2e:e9 | | rev_rmnet5 | DOWN | 0.0.0.0/0 | 0e:1b:eb:b9:23:a0 | | rev_rmnet7 | DOWN | 0.0.0.0/0 | 7a:d9:f6:81:40:5a | | rev_rmnet8 | DOWN | 0.0.0.0/0 | 4e:e2:a9:bb:d0:1b | | rev_rmnet0 | DOWN | 0.0.0.0/0 | fe:65:d0:ca:82:a9 | | rev_rmnet1 | DOWN | 0.0.0.0/0 | da:d8:e8:4f:2e:fe |

Информация о MAC-адресе

Команда:

adb shell cat /sys/class/net/wlan0/address

Пример вывода:

f8:a9:d0:17:42:4d

Приведённый выше вывод является MAC-адресом LAN. Если вам нужна другая информация о подключении, то команда adb shell netcfg, упомянутая в разделе «IP-адрес», будет полезна.

Сведения о процессоре

Команда:

adb shell cat /proc/cpuinfo

Пример вывода:

Processor       : ARMv7 Processor rev 0 (v7l)
processor       : 0
BogoMIPS        : 38.40

processor       : 1
BogoMIPS        : 38.40

processor       : 2
BogoMIPS        : 38.40

processor       : 3
BogoMIPS        : 38.40

Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
CPU implementer : 0x51
CPU architecture: 7
CPU variant     : 0x2
CPU part        : 0x06f
CPU revision    : 0

Hardware        : Qualcomm MSM 8974 HAMMERHEAD (Flattened Device Tree)
Revision        : 000b
Serial          : 0000000000000000

Это информация о процессоре Nexus 5. Из вывода можно узнать, что аппаратное обеспечение — это Qualcomm MSM 8974, а номер процессора от 0 до 3, что означает, что процессор четырёхъядерный. Затем из раздела «Процессор» можно найти, что архитектура процессора — ARMv7 Processor rev 0 ( v71).

Сведения о памяти

Команда:

adb shell cat /proc/meminfo

Пример вывода:

MemTotal:        1027424 kB
MemFree:          486564 kB
Buffers:           15224 kB
Cached:            72464 kB
SwapCached:        24152 kB
Active:           110572 kB
Inactive:         259060 kB
Active(anon):      79176 kB
Inactive(anon):   207736 kB
Active(file):      31396 kB
Inactive(file):    51324 kB
Unevictable:        3948 kB
Mlocked:               0 kB
HighTotal:        409600 kB
HighFree:         132612 kB
LowTotal:         617824 kB
LowFree:          353952 kB
SwapTotal:        262140 kB
SwapFree:         207572 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        265324 kB
Mapped:            47072 kB
Shmem:              1020 kB
Slab:              57372 kB
SReclaimable:       7692 kB
SUnreclaim:        49680 kB
KernelStack:        4512 kB
PageTables:         5912 kB
``` **SDK API, но сохраните предупреждение в logcat. Вы можете продолжать использовать API в строгом режиме.**

| 2 | Запрещено вызывать интерфейсы в тёмно-сером и чёрном списках. |
|---|---|
| 3 | Запрещено вызывать интерфейс из чёрного списка, но разрешено вызывать интерфейс из тёмно-серого списка. |

### Показать/скрыть строку состояния или панель навигации

Настройки в этом разделе соответствуют «Расширенному рабочему столу» в Cyanogenmod.

Команда:
```sh
adb shell settings put global policy_control <key-values>

<key-values> состоит из ключей и их значений, формат: <key1>=<value1>:<key2>=<value2>.

Ключ Значение
immersive.full Скрыть оба
immersive.status Скрыть строку статуса
immersive.navigation Скрыть панель навигации
immersive.preconfirms ?

Значения для этих ключей представляют собой список токенов через запятую, где токены:

Значение Значение
apps Все приложения
* Везде
packagename Включить пакет
-packagename Исключить пакет

Например:

adb shell settings put global policy_control immersive.full=*

Означает установить скрытие строки статуса и панели навигации везде.

adb shell settings put global policy_control immersive.status=com.package1,com.package2:immersive.navigation=apps,-com.package3

Означает скрыть строку статуса в приложениях с именем пакета com.package1 или com.package2, скрыть панель навигации во всех приложениях, кроме тех, у кого имя пакета — com.package3.

Вспомогательные функции

Скриншоты

Сделайте снимок экрана и сохраните на компьютер:

adb exec-out screencap -p > sc.png

Если ваша версия adb старая и не имеет команды exec-out, то вы можете сделать снимок экрана следующим образом:

Сначала сделайте снимок экрана и сохраните его на устройстве:

adb shell screencap -p /sdcard/sc.png

Затем экспортируйте файл png на свой компьютер:

adb pull /sdcard/sc.png

Вы можете использовать команду adb shell screencap --help, чтобы увидеть справку по команде screencap, здесь приведены два важных параметра и их значения:

Параметр Значение
-p Сохранить файл в формате png, указанном
-d Display-id скриншоты отображают указанный номер (случай нескольких экранов дисплея рядом)

Найдено: если вы укажете имя файла, его можно опустить при использовании параметра -p для .png в конце; в противном случае вам нужно будет использовать параметр -p. Если вы не укажете имя файла, содержимое снимка экрана будет напрямую выведено в стандартный вывод.

Ещё один способ сохранить файл скриншота на компьютере с помощью одной команды:

adb shell screencap -p | sed "s/\r$//" > sc.png

Это зависит от команды sed, которая доступна в Linux и Mac OS X по умолчанию. В Windows вы можете найти её в каталоге bin в месте установки Git. В противном случае вам может потребоваться загрузить sed для Windows и добавить каталог, в котором находится sed.exe, к переменной среды PATH.

Запись экрана

Запись экрана сохраняется в формате mp4 на / sdcard:

adb shell screenrecord /sdcard/filename.mp4

Когда вам нужно остановить запись, нажмите Ctrl-C </ kbd>, время записи по умолчанию и максимальное время записи составляет 180 секунд.

Если вам нужно экспортировать на свой компьютер:

adb pull /sdcard/filename.mp4

Вы можете использовать adb shell screenrecord --help, чтобы просмотреть справку по команде screenrecord, следующие параметры являются общими и их значениями:

| Параметр | Значение | Перемонтировать системный раздел как доступный для записи

Примечание: вам нужны права суперпользователя.

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

Шаги:

  1. Войдите в оболочку и переключитесь на привилегии пользователя root. Команда:
adb shell
su
  1. Просмотрите текущий смонтированный раздел. Команда:
mount

Пример вывода:

rootfs / rootfs ro,relatime 0 0
tmpfs /dev tmpfs rw,seclabel,nosuid,relatime,mode=755 0 0
devpts /dev/pts devpts rw,seclabel,relatime,mode=600 0 0
proc /proc proc rw,relatime 0 0
sysfs /sys sysfs rw,seclabel,relatime 0 0
selinuxfs /sys/fs/selinux selinuxfs rw,relatime 0 0
debugfs /sys/kernel/debug debugfs rw,relatime 0 0
none /var tmpfs rw,seclabel,relatime,mode=770,gid=1000 0 0
none /acct cgroup rw,relatime,cpuacct 0 0
none /sys/fs/cgroup tmpfs rw,seclabel,relatime,mode=750,gid=1000 0 0
none /sys/fs/cgroup/memory cgroup rw,relatime,memory 0 0
tmpfs /mnt/asec tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
tmpfs /mnt/obb tmpfs rw,seclabel,relatime,mode=755,gid=1000 0 0
none /dev/memcg cgroup rw,relatime,memory 0 0
none /dev/cpuctl cgroup rw,relatime,cpu 0 0
none /sys/fs/cgroup tmpfs rw,seclabel,relatime,mode=750,gid=1000 0 0
none /sys/fs/cgroup/memory cgroup rw,relatime,memory 0 0
none /sys/fs/cgroup/freezer cgroup rw,relatime,freezer 0 0
/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/userdata /data ext4 rw,seclabel,nosuid,nodev,relatime,noauto_da_alloc,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/cache /cache ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/persist /persist ext4 rw,seclabel,nosuid,nodev,relatime,data=ordered 0 0
/dev/block/platform/msm_sdcc.1/by-name/modem /firmware vfat ro,context=u:object_r:firmware_file:s0,relatime,uid=1000,gid=1000,fmask=0337,dmask=0227,codepage=cp437,iocharset=iso8859-1,shortname=lower,errors=remount-ro 0 0
/dev/fuse /mnt/shell/emulated fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0
/dev/fuse /mnt/shell/emulated/0 fuse rw,nosuid,nodev,relatime,user_id=1023,group_id=1023,default_permissions,allow_other 0 0

Найдите интересующую нас строку с / system:

/dev/block/platform/msm_sdcc.1/by-name/system /system ext4 ro,seclabel,relatime,data=ordered 0 0
  1. Перемонтируйте. Команда:
mount -o remount,rw -t yaffs2 /dev/block/platform/msm_sdcc.1/by-name/system /system

Здесь / dev / block / platform / msm_sdcc.1 / by-name / system — это путь к файлу, который мы получили из вывода на предыдущем шаге. Если вывод не содержит ошибок, то операция прошла успешно, вы можете использовать / system по своему усмотрению.

Проверить подключение через WiFi пароль

Примечание: Вам нужны права суперпользователя.

Команда:

adb shell
su
cat /data/misc/wifi/*.conf

Пример вывода:

network={
    ssid="TP-LINK_9DFC"
    scan_ssid=1
    psk="123456789"
    key_mgmt=WPA-PSK
    group=CCMP TKIP
    auth_alg=OPEN
    sim_num=1
    priority=13893
}

network={
    ssid="TP-LINK_F11E"
    psk="987654321"
    key_mgmt=WPA-PSK
    sim_num=1
    priority=17293
}

В настройках WLAN мы увидим ssid, psk — пароль, key_mgmt — шифрование безопасности. Из конфигурационного файла данные должны быть в файле WifiConfigStore.xml.

adb shell
su
cat /data/misc/wifi/WifiConfigStore.xml

Пример вывода:

Из-за слишком большого количества элементов в файле можно сосредоточиться на ConfigKey — имени WiFi и PreSharedKey — пароле WiFi.

<string name="ConfigKey">&quot;Wi-Fi&quot;WPA_PSK</string>
<string name="PreSharedKey">&quot;931907334&quot;</string>

Чтобы установить системную дату и время

Примечание: вам нужны права суперпользователя.

Команда:

adb shell
su
date -s 20160823.131500

Она должна изменить системную дату и время на 13:15:00 23 августа 2016 года.

Перезагрузите мобильный телефон

Команда:

adb reboot

Определите, является ли устройство корневым

Команда:

adb shell
su

В этом случае командная строка будет выглядеть так: $ указывает на отсутствие прав суперпользователя, # указывает на наличие прав суперпользователя.

Используйте Monkey для стресс-тестирования

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

Использование простое:

adb shell monkey -p <packagename> -v 500

Здесь <packagename> — конкретное приложение, которому нужно отправить 500 псевдослучайных событий.

Подробнее о Monkey см. официальный документ.

Включите и отключите WiFi

Примечание: вам нужны права суперпользователя.

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

Включить WiFi:

adb root
adb shell svc wifi enable

Отключить WiFi:

adb root
adb shell svc wifi disable

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

Команды, связанные с перепрошивкой телефона

Перезагрузка в режиме восстановления

Команда:

adb reboot recovery

Перезагрузка из режима восстановления Android

Команда:

adb reboot

Перезагрузка в режим Fastboot

Команда:

adb reboot bootloader

Обновление системы через sideload

Если вы скачали пакет обновления системы Android, соответствующий вашему устройству, вы также можете выполнить обновление с помощью adb.

Случай в режиме обновления Recovery:

  1. Перезагрузите устройство в режим Recovery.

    Команда:

    adb reboot recovery
  2. В интерфейсе устройства перейдите в раздел «Применить обновление» — «Применить из ADB».

    Примечание: меню восстановления могут отличаться, но в некоторых версиях есть пункт меню «Применить обновление из ADB».

  3. Загрузите и обновите систему с помощью команды:

    adb sideload <путь к файлу обновления.zip>

Команды, связанные с безопасностью

Включение и отключение SELinux

Включить SELinux:

adb root
adb shell setenforce 1

Отключить SELinux:

adb root
adb shell setenforce 0

Включение и отключение dm_verity

Включить dm_verity:

adb root
adb enable-verity

Отключить dm_verity:

adb root
adb disable-verity

Другие команды adb shell

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

Просмотр процессов

Команда:

adb shell ps

Пример вывода:

USER     PID   PPID  VSIZE  RSS     WCHAN    PC        NAME
root      1     0     8904   788   ffffffff 00000000 S /init
root      2     0     0      0     ffffffff 00000000 S kthreadd
...
u0_a71    7779  5926  1538748 48896 ffffffff 00000000 S com.sohu.inputmethod.sogou:classic
u0_a58    7963  5926  1561916 59568 ffffffff 00000000 S org.mazhuang.boottimemeasure
...
shell     8750  217   10640  740   00000000 b6f28340 R ps

Значение каждого столбца:

Список Значение
USER их пользователь
PID Идентификатор процесса
PPID Идентификатор родительского процесса
NAME Имя процесса

Просмотрите потребление ресурсов в реальном времени

Команда:

adb shell top

Пример вывода:

User 0%, System 6%, IOW 0%, IRQ 0%
User 3 + Nice 0 + Sys 21 + Idle 280 + IOW 0 + IRQ 0 + SIRQ 3 = 307

PID PR CPU% S #THR VSS RSS PCY

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/awesome-lib-awesome-adb.git
git@api.gitlife.ru:oschina-mirror/awesome-lib-awesome-adb.git
oschina-mirror
awesome-lib-awesome-adb
awesome-lib-awesome-adb
master