以上来自 知乎 Freeman 的回答
dumpsys 常用语法
adb shell dumpsys [-t timeout] [--help | -l | --skip services | service [arguments] | -c | -h]
下表列出了使用 dumpsys
时的可用选项。
选项 | 说明 |
---|---|
-t timeout | 指定超时期限(秒)。如果未指定,默认值为 10 秒。 |
–help | 输出 dumpsys 工具的帮助文本。 |
-l | 输出可与 dumpsys 配合使用的系统服务的完整列表。 |
–skip services | 指定您不希望包含在输出中的服务。 |
service [arguments] | 指定您希望输出的服务。某些服务可能允许您传递可选参数。您可以通过将 -h 选项与服务名称一起传递来了解这些可选参数,如下所示:adb shell dumpsys procstats -h
|
-c | 指定某些服务时,附加此选项能以计算机可读的格式输出数据。 |
-h | 对于某些服务,附加此选项可查看该服务的帮助文本和其他选项。 |
dumpsys 原理
dumpsys 命令源码来自 frameworks/native/cmds/dumpsys/dumpsys.cpp。
dumpsys 主要做了以下几件事:
- 获取 ServiceManager 对象
sm_
- 使用
sm_
的listService()
获取系统
所有向 ServiceManager 注册过的服务 - 使用
sm_
的checkService()
获取指定服务 - 调用 service 远程服务中的
dump()
方法输出相应的信息
简单来讲,dumpsys 通过用户输入命令中的 service 名称,使用 checkService()
获取指定 service ,并调用其远程服务中的 dump()
方法来输出相应的信息。