手机上的 adb shell 终端:免 root 在安卓本机运行 shell 命令
想在安卓手机上直接运行 adb shell 命令,不用电脑也不用 root?本文讲清楚普通 App 终端和 adb shell 用户的权限区别,并整理 pm、am、settings、dumpsys、wm、cmd 等常用命令。
在安卓手机上运行 shell 命令有两种权限:普通 App 的终端(比如 Termux)只有这个 App 自己的权限,很多系统命令会报 Permission denied。adb 的 shell 用户权限高得多,能停用应用、改系统设置、授予权限,和电脑上的 adb shell 完全一样,而且不需要 root。在手机上拿到 shell 用户的办法,是让手机通过「无线调试」连接自己的 adb(Android 11 及以上)。
两种权限的区别
| 能做什么 | App 自己的 sh | adb shell 用户 |
|---|---|---|
ls、cat、ping、getprop | 可以 | 可以 |
pm list packages | 部分可以 | 可以 |
pm disable-user、pm clear 其他应用 | 不行 | 可以 |
settings put global/secure | 不行 | 可以(大部分键) |
pm grant 授予权限 | 不行 | 可以(开发者可授予的权限) |
screencap、screenrecord、input | 不行 | 可以 |
| 读其他 App 的私有数据、改系统分区 | 不行 | 不行(需要 root) |
用 ADB Kit 打开终端
ADB Kit 是 Google Play 上的安卓 App(中国大陆通常无法直接访问 Google Play),Shell 标签页是一个 Termux 风格的真终端:
- 一个持续运行的 shell,
cd、历史记录(↑)、Tab 补全、Ctrl+C、颜色都正常,top、vi、less也能用。 - 两行额外按键(ESC、Tab、CTRL、ALT、方向键等),输入路径时显示文件夹和文件建议。
- 快捷命令:保存常用命令,一点就执行。
- 双指缩放调整字号,⋮ 菜单里有 导入文件 和 导出文件。
未连接 时,终端运行 App 自己的 sh,顶部提示以本应用的权限运行。在 主页 完成无线调试配对后(点 开始配对,在通知里输入配对码),终端就换成 adb 的 shell 用户。
常用命令
应用管理(pm、am)
pm list packages -3 # 第三方应用
pm path com.example.app # APK 路径
pm disable-user --user 0 com.example.app # 停用应用(可用 pm enable 恢复)
pm clear com.example.app # 清除数据,不可恢复
am force-stop com.example.app # 强行停止
am start -n com.android.settings/.Settings # 打开设置
pm grant com.example.app android.permission.POST_NOTIFICATIONS系统设置(settings)
settings get system screen_off_timeout
settings put system screen_off_timeout 600000 # 息屏时间 10 分钟
settings put global animator_duration_scale 0.5 # 动画加速
settings put global window_animation_scale 0.5
settings put global transition_animation_scale 0.5状态信息(dumpsys、getprop)
dumpsys battery # 电量、温度、充电状态
dumpsys meminfo | head -30 # 内存
getprop ro.build.version.release # Android 版本
getprop ro.product.model屏幕(wm、input)
wm size # 分辨率
wm density # DPI
wm density 400 # 修改 DPI,wm density reset 恢复
input keyevent 26 # 电源键cmd 系列
cmd package list packages -d # 已停用的应用
cmd wifi status更多命令见 ADB 常用命令速查。注意:在手机上直接输入时,不要加 adb shell 前缀,你已经在 shell 里了。
不想记命令?
- 工具 › 应用 里有强行停止、清除数据、停用 / 启用、权限修改,背后执行的就是上面这些命令。
- Auto script 可以把一组命令存成配方,手动运行或每天定时运行,还能导入导出 JSON。
国产手机的坑
- 小米 / 红米 / POCO:
input、pm grant等需要打开 USB 调试(安全设置),否则报SecurityException,见 小米 USB 调试(安全设置)。 - 部分 ROM 会限制
settings put某些键,报错时说明系统不允许 shell 用户修改。 - 华为 HarmonyOS NEXT 不是 Android,没有这套 shell。
安全提示
pm clear、pm uninstall 和停用系统应用都可能让手机出问题。停用前先确认包名,系统应用优先用 pm disable-user,出了问题还能用 pm enable 恢复。