Команда adb shell pm list packages показывает все установленные пакеты на устройстве, а adb shell dumpsys battery — реальное состояние аккумулятора, и это лишь две из десятков команд, доступных после подключения смартфона к компьютеру через Android Debug Bridge. Инструмент ADB входит в состав Android SDK Platform Tools и позволяет выполнять операции, недоступные из обычного интерфейса системы: удалять предустановленные приложения, снимать скриншоты, читать системные логи и менять скрытые настройки.
Работа с adb shell требует включённой отладки по USB на устройстве и установленных драйверов на компьютере. В этой статье разберём базовый синтаксис, самые востребованные команды и меры предосторожности, которые помогут не навредить системе.
Подготовка: включение отладки по USB
Прежде чем выполнять любые команды, необходимо активировать режим разработчика на смартфоне. Для этого откройте настройки, найдите раздел «О телефоне» и несколько раз нажмите на строку «Номер сборки» — точное расположение пункта зависит от оболочки производителя (MIUI, One UI, ColorOS и других могут отличаться). После появления сообщения «Вы стали разработчиком» в настройках появится новое меню.
В меню для разработчиков включите переключатель «Отладка по USB». Затем подключите устройство к компьютеру кабелем и при первом подключении подтвердите на экране смартфона запрос на разрешение отладки с данного ПК. Проверить, видит ли компьютер устройство, можно командой:
adb devices
Если в списке отображается серийный номер со статусом device — соединение установлено. Статус unauthorized означает, что разрешение на смартфоне не подтверждено, а пустой список обычно указывает на проблему с драйверами или кабелем.
Базовые команды adb shell
Конструкция adb shell открывает интерактивную командную строку прямо на устройстве. Внутри этой оболочки работают стандартные Unix-подобные команды: ls для просмотра каталогов, cd для перехода между папками, cat для чтения файлов. Можно также выполнять одиночные команды без входа в оболочку, дописывая их после adb shell.
Чаще всего пользователям нужны следующие команды:
- 📱
adb shell getprop ro.product.model— показывает модель устройства - 🔋
adb shell dumpsys battery— выводит уровень заряда, температуру и статус батареи - 📸
adb shell screencap /sdcard/screen.png— делает скриншот и сохраняет его в память устройства - 🔄
adb reboot— перезагружает смартфон - 📂
adb pull /sdcard/file.txt— копирует файл с устройства на компьютер
Утилита dumpsys заслуживает отдельного внимания: она выводит диагностическую информацию о системных службах. Например, adb shell dumpsys wifi покажет состояние Wi-Fi-модуля, а adb shell dumpsys meminfo — распределение оперативной памяти. Объём вывода большой, поэтому полезно перенаправлять его в файл для анализа.
Управление приложениями через pm
Менеджер пакетов pm (package manager) — один из самых востребованных инструментов внутри adb shell. С его помощью можно просматривать, отключать и удалять приложения, включая часть предустановленных системных. Базовый синтаксис выглядит так:
adb shell pm list packages
adb shell pm list packages -3
Флаг -3 ограничивает список только сторонними приложениями, установленными пользователем. Чтобы найти конкретный пакет, добавьте фильтр: adb shell pm list packages | grep имя (в Windows вместо grep используйте findstr).
Для удаления приложения текущего пользователя применяется команда:
adb shell pm uninstall -k --user 0 com.example.app
Здесь -k сохраняет данные приложения, а --user 0 указывает основного пользователя системы. Удаление через pm не требует root-прав, но затрагивает только текущего пользователя — пакет физически остаётся в системном разделе и вернётся после сброса к заводским настройкам. Более мягкая альтернатива — отключение пакета командой adb shell pm disable-user --user 0 имя_пакета, которую легко отменить через pm enable.
☑️ Безопасное удаление приложения через ADB
⚠️ Внимание: удаление системных пакетов (телефонии, настроек, служб Google) может привести к неработоспособности функций устройства или циклической перезагрузке. Перед удалением любого незнакомого пакета выясните его назначение и предпочитайте отключение вместо удаления.
Работа с файлами и логами
Для передачи файлов между компьютером и смартфоном служат команды adb push и adb pull. Первая отправляет файл на устройство, вторая — забирает его на ПК:
adb push photo.jpg /sdcard/Download/
adb pull /sdcard/DCIM/ ./backup/
Обратите внимание: запись возможна только в разделы, доступные без root-прав, — обычно это /sdcard/ и её подкаталоги. Попытка записать файл в системные пути вроде /system/ завершится ошибкой доступа, и это нормальное поведение.
Чтение системных логов выполняется командой logcat. Она незаменима при диагностике сбоев приложений:
adb logcat -d > log.txt
adb logcat *:E
Первая команда сохраняет текущий буфер логов в файл, вторая фильтрует вывод, показывая только сообщения уровня ошибок (Error). Логи обновляются в реальном времени, поэтому для остановки нажмите Ctrl+C.
Почему logcat показывает слишком много информации
Системный лог Android пишут все процессы одновременно, поэтому полезно фильтровать вывод по тегу приложения (adb logcat -s ИмяТега) или по уровню важности: V — verbose, D — debug, I — info, W — warning, E — error. Для поиска причины сбоя обычно достаточно уровней W и E.
Полезные команды настроек и ввода
Через settings можно читать и менять системные параметры, которые иногда недоступны в графическом интерфейсе. Команды делятся на три пространства имён: system, secure и global. Примеры чтения значений:
adb shell settings get system screen_brightness
adb shell settings get global airplane_mode_on
Запись выполняется командой put с аналогичным синтаксисом. Утилита input имитирует нажатия и жесты: adb shell input keyevent 26 имитирует кнопку питания, а adb shell input tap 500 500 — касание экрана по координатам. Эти команды часто используют для автоматизации и тестирования интерфейсов.
| Команда | Назначение | Требует root |
|---|---|---|
adb shell pm list packages | Список установленных пакетов | Нет |
adb shell dumpsys battery | Состояние аккумулятора | Нет |
adb shell wm size | Разрешение экрана | Нет |
adb logcat | Чтение системных логов | Нет |
adb reboot recovery | Перезагрузка в рекавери | Нет |
⚠️ Внимание: изменение параметров через
settings putиwm size/wm densityможет нарушить отображение интерфейса. Запишите исходные значения командойgetперед любыми изменениями, чтобы иметь возможность откатить настройку.
Типичные ошибки при работе с ADB
Наиболее частая проблема — устройство не определяется командой adb devices. Проверьте по порядку: включена ли отладка по USB, подтверждён ли запрос на разрешение на экране смартфона, установлены ли драйверы (в Windows — через Диспетчер устройств), исправен ли кабель. Некоторые кабели поддерживают только зарядку и не передают данные.
Ошибка device unauthorized решается отзывом разрешений в меню разработчика и повторным подключением. Ошибка more than one device означает, что подключено несколько устройств или эмуляторов — укажите нужный флагом -s и серийным номером: adb -s серийник shell.
Если команда выполняется, но возвращает permission denied, скорее всего, действие требует root-прав или запрещено политикой производителя. В таком случае не пытайтесь обходить ограничение без понимания последствий — многие операции корректно недоступны на заблокированных устройствах.
Часто задаваемые вопросы
Нужен ли root для команд adb shell?
Нет. Большинство команд — просмотр пакетов, логи, скриншоты, передача файлов, чтение настроек — работают на устройстве без root-прав. Доступ к системным разделам и изменение защищённых данных действительно требуют рута, но для повседневных задач он не нужен.
Как вернуть удалённое через pm приложение?
Если пакет удалён только для текущего пользователя (с флагом --user 0), он физически остался в системе. Восстановить его можно командой adb shell cmd package install-existing имя_пакета. Также помогает сброс к заводским настройкам, но это крайняя мера с потерей данных.
Можно ли использовать ADB без кабеля?
Да, если устройство и компьютер находятся в одной сети Wi-Fi. На современных версиях Android в меню разработчика есть пункт беспроводной отладки с сопряжением по коду. На старых версиях требуется сначала подключиться по USB и выполнить adb tcpip 5555, после чего подключаться по IP-адресу устройства.
Чем отличается adb shell от просто adb?
Команды adb выполняются на уровне самого моста: установка APK, перезагрузка, передача файлов. Конструкция adb shell открывает командную оболочку внутри Android, где доступны системные утилиты самой ОС — pm, am, dumpsys, settings и другие.
Безопасно ли удалять предустановленные приложения?
Относительно безопасно при соблюдении осторожности: удаление через pm uninstall --user 0 затрагивает только текущего пользователя и обратимо. Однако удаление критичных системных пакетов способно нарушить работу устройства, поэтому предварительно выясняйте назначение каждого пакета и предпочитайте отключение через disable-user.