教程发布于: 阅读约 3 分钟

手机上的 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 自己的 shadb 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 恢复。