一、dumpsys是什么?
dumpsys 是一个在设备上运行的系统工具,它可以转储(dump)所有系统服务(System Services)的当前状态信息。
Android系统的每个核心功能(如活动、内存、电源、窗口等)都由一个独立的系统服务管理。
dumpsys 就是向这些服务询问其内部状态的"总调度员"。
它的强大之处在于:
- 信息量巨大:输出信息极其详细,涵盖了系统运行的方方面面。
- 无需Root:大多数调试信息在非Root设备上也可获取。
- 实时快照:获取的是命令执行那一刻系统的完整状态快照。
基本命令格式:
# 查看所有可用的系统服务
adb shell dumpsys -l
#转储特定系统服务的信息
adb shell dumpsys <service_name>
二、测试工程师必备的Service清单
dumpsys -l 会列出上百个服务,但我们只需关注测试中最有用的几个。
1) 内存分析 (dumpsys meminfo)命令:
#查看所有进程的内存信息(信息量大)
adb shell dumpsys meminfo
#查看指定包名的应用的内存详情(最常用!)
adb shell dumpsys meminfo <PACKAGE_NAME>
2) 活动栈分析 (dumpsys activity)
命令(过滤是关键):
#输出信息极多,必须过滤!
#查看当前聚焦的Activity(最常用)
adb shell dumpsys activity activities |grep -E "mCurrentFocus|mFocusedActivity"
#查看所有Activity的回退栈(Task)信息
adb shell dumpsys activity activities |grep -A 10 -B 2"TaskRecord"
Windows系统请注意:
grep 是一个在 Linux/Unix/macOS 等类 Unix 系统中才存在的文本搜索工具。而 Windows 系统的命令行环境默认没有这个命令。
需要现在 CMD 中输入:adb shell
然后,在出现的设备命令行 $ 或 # 后,输入:dumpsys activity activities | grep -E 'mCurrentFocus|mFocusedActivity'
3) 电源与耗电分析 (dumpsys batterystats)
测试场景: 应用耗电异常,如何提供证据?待机功耗高,是哪个Wake Lock在作祟?
命令(需要重置统计信息以获取干净数据):
#重置电池统计信息
adb shell dumpsys batterystats --reset
#执行你的测试场景(例如,玩10分钟游戏)...
#导出耗电统计信息
adb shell dumpsys batterystats > batterystats.txt
更高级的分析:
Android提供了更强大的工具来生成HTML可视化报告:
#生成Bug报告,包含详细的电源信息(操作较慢)
adb bugreport
#或者使用新版本命令生成HTML格式的电池分析报告
adb shell dumpsys batterystats --checkin
4) 窗口分析 (dumpsys window)
测试场景: 测试沉浸式状态栏、刘海屏适配、分屏模式、自由窗口模式时,如何确认窗口属性?
命令:
#查看当前窗口信息,包含Display尺寸、刘海屏信息等
adb shell dumpsys window
#常用过滤:查看所有已连接的显示屏信息
adb shell dumpsys window |grep -E "Display|init"
#常用过滤:查看刘海屏(display cutout)信息
adb shell dumpsys window |grep -i cutout
5) 应用启动分析 (dumpsys package)
测试场景: 应用安装后有哪些权限?它注册了哪些组件(Activity/Service等)?
命令:
#查看指定应用的详细信息,包含权限、组件等
adb shell dumpsys package <PACKAGE_NAME>