abd shell中cmd命令的全称及具体含义是什么?
Android adb shell 中
cmd命令的全称与功能说明 首先说明,你输入里的abd是笔误,正确是Android调试桥adb(Android Debug Bridge)。
命令全称
cmd不是泛称的“command(命令)”缩写,它的正式全称是 Service Command,是Android系统专属的原生shell命令,从Android 5.0(API 21)版本开始引入,专门用来对接系统服务的命令行调用场景,替代了旧版本中需要通过service命令手动拼接Binder事务参数的繁琐操作。
功能定位
它本质是一个运行在shell侧的轻量Binder客户端,核心作用是和系统服务管理器(ServiceManager)通信,直接调用已注册系统服务暴露的命令接口,不需要依赖任何应用层组件:
- 不带任何参数执行
cmd时,会返回参数缺失提示,和你贴出的运行结果完全一致:
star2qltechn:/ $ cmd cmd: No service specified; use -l to list all services
- 执行
cmd -l参数时,会列出当前所有注册到ServiceManager、支持cmd调用的运行中服务,也就是你测试时看到的服务列表输出:
star2qltechn:/ $ cmd -l Currently running services: AAS ...
- 常规使用格式为
cmd <服务名> <服务子命令>,比如cmd activity top可以查看当前栈顶的Activity信息,cmd package list packages可以列出设备上已安装的所有应用包名。
和普通shell命令的核心差异
普通shell命令比如ls、cd要么是shell内置命令,要么是独立的可执行文件,逻辑运行在shell进程自身的权限空间内;而cmd本身只负责转发调用请求,实际逻辑全部运行在对应的系统服务进程中,持有对应系统服务的权限等级,这也是它和普通命令最核心的区别。
内容的提问来源于stack exchange,提问作者user15321167
相关产品推荐
相关产品推荐

