Команда pm list packages выводит имена всех пакетов, установленных на Android-устройстве, и используется через ADB, эмулятор терминала или root-терминал для поиска конкретного приложения перед его отключением, удалением или очисткой данных. Если вы подключили смартфон к компьютеру и в терминале видите длинный список строк вида package:com.google.android.gms, значит, команда отработала корректно — осталось понять, как фильтровать вывод и что делать с результатом дальше.
В этой статье разберём синтаксис команды pm list packages, полезные ключи и фильтры, способы найти нужное приложение по части названия, а также безопасные действия с пакетами. Отдельно остановимся на типичных ошибках вроде «device not found» и «permission denied», с которыми сталкиваются при первом запуске ADB.
Что делает команда pm list packages
Утилита pm (Package Manager) — это системный инструмент Android, который управляет установленными приложениями. Подкоманда list packages запрашивает у системы перечень всех зарегистрированных пакетов: как пользовательских, так и системных. Каждая строка вывода содержит префикс package: и уникальное имя пакета в формате обратного домена, например com.whatsapp или com.android.settings.
Имя пакета — это не то же самое, что название приложения на рабочем столе. Иконка может называться «Камера», а пакет — com.android.camera2 или иметь фирменное имя производителя. Именно поэтому команда полезна: она показывает реальный идентификатор, который нужен для дальнейших команд вроде pm uninstall или pm disable.
Запустить команду можно несколькими способами: через ADB с компьютера, в приложении-терминале на устройстве с root-доступом или через adb shell. Без root базовый вывод списка доступен всем — ограничения касаются только действий по изменению пакетов.
Как запустить команду через ADB
Для работы через компьютер потребуется включить отладку по USB на смартфоне и установить инструменты платформы Android SDK (platform-tools) на ПК. Путь к пункту «Отладка по USB» находится в разделе «Для разработчиков», который открывается после нескольких нажатий на «Номер сборки» в сведениях о телефоне. Точное расположение пунктов зависит от оболочки производителя, поэтому при расхождениях сверьтесь с инструкцией для своей модели.
После подключения устройства кабелем выполните в терминале компьютера:
adb devices
adb shell pm list packages
Первая команда проверяет, что устройство определилось: в списке должна появиться строка с серийным номером и статусом device. Если статус unauthorized — на экране смартфона нужно подтвердить разрешение на отладку. Только после этого вторая команда вернёт список пакетов.
☑️ Подготовка к работе с pm list packages
Полезные ключи и фильтры команды
Базовый вывод без параметров может включать сотни строк, поэтому на практике команду почти всегда используют с ключами. Вот основные варианты, поддержка которых встроена в pm:
| Команда | Что показывает |
|---|---|
pm list packages -s | Только системные приложения |
pm list packages -3 | Только сторонние (установленные пользователем) |
pm list packages -d | Отключённые пакеты |
pm list packages -e | Включённые пакеты |
pm list packages -f | Пакеты с путями к APK-файлам |
Для поиска по части имени добавьте строку-фильтр в конец команды. Например, pm list packages google покажет все пакеты, в имени которых встречается «google». На компьютере удобно комбинировать вывод с поиском по тексту: в Windows — через findstr, в Linux и macOS — через grep.
adb shell pm list packages | grep camera
- 🔍 Фильтр по слову — самый быстрый способ найти пакет конкретного приложения.
- 📦 Ключ
-fпомогает понять, где физически лежит APK, что полезно перед резервным копированием. - 🚫 Ключ
-dпокажет, какие системные компоненты уже отключены — удобно для проверки после «чистки» прошивки. - 👤 Ключ
--user 0уточняет профиль пользователя, что важно на устройствах с несколькими учётными записями.
Типичные ошибки и их решение
Самая частая проблема — сообщение error: no devices/emulators found. Оно означает, что ADB не видит устройство: не включена отладка по USB, не установлен драйвер (актуально для Windows), неисправен кабель или не подтверждён запрос на экране смартфона. Проверяйте эти пункты по очереди, начиная с adb devices.
⚠️ Внимание: некоторые кабели USB поддерживают только зарядку и не передают данные. Если устройство не определяется ни в одной программе, первым делом попробуйте другой кабель и другой порт компьютера.
Ошибка permission denied при выполнении команд в терминале на самом устройстве обычно указывает на отсутствие root-прав: часть функций pm доступна только системе. При этом сам просмотр списка пакетов через adb shell root не требует — ограничения касаются удаления и отключения защищённых компонентов.
Если команда выводит пустой результат с фильтром, проверьте написание поискового слова: имена пакетов чувствительны к регистру в некоторых средах и обычно пишутся строчными буквами. Попробуйте сократить фильтр до одного ключевого слова.
Что можно делать с найденными пакетами
После того как нужный пакет найден, с ним выполняют типовые операции. Отключение системного приложения без удаления: pm disable-user --user 0 имя_пакета. Удаление для текущего пользователя с сохранением возможности восстановления через сброс: pm uninstall -k --user 0 имя_пакета. Очистка данных приложения: pm clear имя_пакета.
⚠️ Внимание: отключение или удаление системных пакетов может нарушить работу устройства — от исчезновения отдельных функций до невозможности загрузки. Перед изменениями убедитесь, что пакет действительно относится к ненужному приложению, а не к системному компоненту. Список «безопасных для удаления» пакетов различается для каждой модели и прошивки — сверяйтесь с проверенными источниками именно для вашего устройства.
Команда pm uninstall -k --user 0 не стирает приложение из системного раздела: она удаляет его только для указанного пользователя, и после сброса к заводским настройкам пакет вернётся. Это обратимая операция, поэтому она предпочтительнее радикальных методов с root-доступом.
Просмотр дополнительной информации о пакете
Когда имя пакета известно, полезно посмотреть его подробные параметры. Команда adb shell dumpsys package имя_пакета выводит версию, разрешения, путь установки и состояние приложения. Вывод объёмный, поэтому его тоже удобно фильтровать через grep по словам вроде versionName или firstInstallTime.
Короткий путь к APK даёт команда adb shell pm path имя_пакета. Она пригодится, если нужно выгрузить установочный файл приложения на компьютер для анализа или переноса.
Как выгрузить APK установленного приложения
Сначала выполните adb shell pm path имя_пакета — команда вернёт путь вида /data/app/.../base.apk. Затем скопируйте файл командой adb pull путь_к_apk на компьютер. Для split-приложений путей может быть несколько — выгружать нужно все части.
- 🧩
pm path— показывает расположение APK без лишнего вывода. - 📋
dumpsys package— полный отчёт о разрешениях и версиях. - 🔄
pm enable— возвращает отключённый пакет в рабочее состояние.
FAQ: частые вопросы о pm list packages
Нужен ли root для команды pm list packages?
Нет. Просмотр списка пакетов через adb shell доступен без root-прав. Root требуется только для отдельных действий с защищёнными системными компонентами.
Почему в списке нет приложения, которое установлено на телефоне?
Проверьте, не ищете ли вы его по названию с иконки вместо имени пакета. Используйте фильтр по части слова, например pm list packages whats вместо «WhatsApp». Также приложение может быть установлено в другом пользовательском профиле — добавьте ключ --user с нужным идентификатором.
Можно ли выполнить команду без компьютера?
Да, через приложение-терминал на самом устройстве. Однако без root часть функций pm будет недоступна, а на новых версиях Android терминалы имеют ограниченный доступ к системным командам. Надёжнее использовать ADB с ПК или беспроводную отладку, если она поддерживается вашей версией системы.
Чем отличается pm list packages -s от -3?
Ключ -s выводит системные приложения, предустановленные производителем и прошивкой. Ключ -3 показывает только сторонние пакеты — те, что установил пользователь из магазина приложений или из APK-файлов.
Опасно ли просто выполнять pm list packages?
Нет, это команда только для чтения: она ничего не изменяет в системе. Осторожность нужна на следующем шаге — при удалении или отключении найденных пакетов.