ИнструкцияОпубликовано: 5 мин чтения

Терминал Android без root: adb shell прямо на телефоне

Как выполнять команды adb shell на самом Android без root и ПК. Чем shell приложения отличается от adb shell и полезные команды pm, am, settings, dumpsys, wm, cmd.

Выполнять shell-команды на Android без root можно двумя способами, и права у них очень разные. Обычный терминал запускает sh с правами самого приложения: можно смотреть файлы, getprop и запущенные процессы, но нельзя трогать чужие приложения и системные настройки. adb shell работает от системного пользователя shell и умеет то же, что adb shell с компьютера: удалять и отключать приложения, менять настройки, выдавать разрешения, снимать экран. С Android 11 adb shell доступен прямо на телефоне через «Отладку по Wi-Fi», без ПК и root.

Shell приложения или adb shell

Shell приложенияadb shell (пользователь shell)
Как получитьЛюбой эмулятор терминала«Отладка по Wi-Fi» и сопряжение
ls, cat, getprop, psДаДа
Файлы в /sdcardЧастично, зависит от версии AndroidВсе
pm uninstall, pm disable-user, pm clearНетДа
settings put, wm size, dumpsys battery setНетДа
screencap, screenrecord, inputНетДа
Данные других приложений в /data/dataНетНет (нужен root)

adb shell это повышенные права, но не root: системный раздел и чужие данные остаются закрытыми.

Терминал в ADB Kit

Вкладка Shell в ADB Kit это полноценный терминал в духе Termux: один постоянный shell на псевдотерминале, поэтому cd, история по ↑, автодополнение по Tab, Ctrl+C, цвета и полноэкранные программы top, vi и less работают как в обычной консоли.

Режим видно в верхней строке:

  • «Shell приложения · ограничен»: пока телефон не подключён. Запускается собственный sh приложения, стартовая папка /sdcard. Если команда упирается в «Permission denied» для файлов в общей памяти, над клавишами появится «Эти файлы может открыть только adb» с кнопкой подключения: терминал перезапустится на adb shell в той же папке. Кнопка «Через adb» делает то же самое в любой момент.
  • «adb shell · полный доступ»: после подключения через «Отладку по Wi-Fi». Те же права, что у adb shell с компьютера.

Подключение настраивается один раз на вкладке «Главная»: «Начать сопряжение», код вводится прямо в уведомлении. Подробно в статье ADB на телефоне без компьютера.

Что ещё есть в терминале:

  • Два ряда клавиш как в Termux: ESC, /, -, HOME, END, PGUP, PGDN, стрелки, Tab, CTRL и ALT. Долгое нажатие на / или - открывает дополнительные символы.
  • Подсказки папок и файлов: наберите cd и нажмите на нужную папку.
  • «Сниппеты»: сохранённые команды, которые вводятся одним нажатием.
  • Размер текста меняется щипком двумя пальцами.
  • В меню «Ещё» (⋮) есть «Импорт файла» и «Экспорт файла»: файл копируется в текущую папку терминала или из неё через системный выбор файлов.

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

Полезные команды adb shell

Все команды ниже работают без root, если терминал в режиме adb shell.

Приложения: pm и am

pm list packages -3                       # сторонние приложения
pm list packages -d                       # отключённые
pm path com.example.app                   # где лежит APK
am start -n com.android.settings/.Settings  # открыть настройки
am force-stop com.example.app             # остановить приложение
pm clear com.example.app                  # стереть данные приложения
pm disable-user --user 0 com.example.app  # отключить
pm enable com.example.app                 # включить обратно

Удалить предустановленное приложение для текущего пользователя (сам APK остаётся в системе, поэтому вернуть его можно):

pm uninstall --user 0 com.example.bloat
cmd package install-existing com.example.bloat   # вернуть

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

Разрешения

pm grant com.example.app android.permission.POST_NOTIFICATIONS
pm revoke com.example.app android.permission.CAMERA
cmd appops get com.example.app

На Xiaomi, Redmi и POCO pm grant и input требуют включённой «Отладки по USB (Настройки безопасности)», см. статью про Xiaomi.

Настройки: settings

settings get global window_animation_scale
settings put global window_animation_scale 0.5
settings put global transition_animation_scale 0.5
settings put global animator_duration_scale 0.5
settings put system screen_off_timeout 600000   # гасить экран через 10 минут

Значение 1 возвращает стандартную скорость анимаций.

Состояние системы: dumpsys

dumpsys battery                    # заряд, температура, статус
dumpsys battery set level 15       # подменить уровень заряда для теста
dumpsys battery reset              # вернуть реальные значения
dumpsys meminfo com.example.app    # память приложения
dumpsys package com.example.app | grep versionName

Экран: wm, screencap, input

wm size                  # текущее разрешение
wm density               # плотность (dpi)
wm density 400           # сделать интерфейс мельче или крупнее
wm density reset         # вернуть как было
screencap -p /sdcard/Pictures/shot.png
input keyevent KEYCODE_HOME

Для скриншотов и записи экрана без набора команд есть «Утилиты» › «Скриншот и запись». Больше команд в шпаргалке по ADB.

Система и процессы

getprop ro.product.model
getprop ro.build.version.release
top -n 1 | head -20
ps -A | grep example
logcat -d | tail -50

Частые проблемы

  • Permission denied или java.lang.SecurityException. Терминал в режиме «Shell приложения». Подключитесь, чтобы перейти в adb shell. Если ошибка осталась, команда требует root или особого разрешения производителя.
  • pm grant пишет, что разрешение нельзя выдать. Через adb выдаются только разрешения, которые приложение объявило и которые Android разрешает менять. Обычные разрешения (например, интернет) не меняются вовсе.
  • Связь пропала посреди работы. Android выключил «Отладку по Wi-Fi» после перезагрузки или смены сети. Включите её снова, ADB Kit переподключится сам, см. почему отладка по Wi-Fi отключается сама.
  • top или vi выглядят криво. Поверните телефон или уменьшите текст щипком: программам нужна ширина экрана.

Безопасность

У adb shell достаточно прав, чтобы стереть данные приложений или отключить системные компоненты. Не вставляйте в терминал команды из непроверенных источников и перед pm uninstall, pm clear и settings put убедитесь, что понимаете, что делает команда. Изменения через wm и settings откатываются командами reset и возвратом прежних значений.