Терминал 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 и возвратом прежних значений.