Android-世界的活点地图-dumpsys(Android-Detail-工具)

dumpsys 是一种在 Android 设备上运行的工具,可提供有关系统服务的信息。—— 官方文档

它就像 Android 世界的「活点地图」(《哈利波特》中的魔法地图),是一个非常强大的神兵利器。

dump(作为计算机的术语翻译为转储),sys(system)。我们可以通过 adb 调用该命令以获取系统服务信息。

👆 为了方便记忆,可用这样理解 dump

作为 动词,可以从 dump 的目的和 dump 的对象这两个方面去理解 dump 本身。

1、为什么要 dump(dump 的目的)?

因为程序在计算机中运行时,在内存、CPU、I/O等设备上的数据都是动态的(或者说是易失的),也就是说数据使用完或者发生异常就会丢掉。如果我想得到某些时刻的数据(有可能是调试程序 Bug 或者收集某些信息),就要把他转储(dump)为静态(如文件)的形式。否则,这些数据你永远都拿不到。

2、dump 转储的是什么内容(dump 的对象)?

其实上边已经提到了,就是将动态(易失)的数据,保存为静态的数据(持久数据)。像程序这种本来就保存在存储介质(如硬盘)中的数据,也就没有必要dump。

现在,dump作为 名词 也很好理解了,一般就是指 dump(动词) 的结果文件。

以上来自 知乎 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

sm_

dump 输出信息

dumpsys 主要做了以下几件事:

  • 获取 ServiceManager 对象 sm_
  • 使用 sm_ 的 listService() 获取系统所有向 ServiceManager 注册过的服务
  • 使用 sm_ 的 checkService() 获取指定服务
  • 调用 service 远程服务中的 dump() 方法输出相应的信息

简单来讲,dumpsys 通过用户输入命令中的 service 名称,使用 checkService() 获取指定 service ,并调用其远程服务中的 dump() 方法来输出相应的信息。

👆 划重点

例如 adb shell dumpsys activity activities

👆 service 名称为 activity ,输出 ActivityManagerService 相关的信息,参数 activities 表示显示 activity 状态

dumpsys 的使用技巧

常用的 service

常用的 service 名称有:

dumpsys activity //查询AMS服务相关信息
dumpsys window //查询WMS服务相关信息
dumpsys cpuinfo //查询CPU情况
dumpsys meminfo //查询内存情况

adb shell dumpsys -l 命令能够输出可与 dumpsys 配合使用的系统服务的完整列表。

adb shell dumpsys -l

详情如下:

服务名类名功能
activityActivityManagerServiceAMS相关信息
packagePackageManagerServicePMS相关信息
windowWindowManagerServiceWMS相关信息
inputInputManagerServiceIMS相关信息
powerPowerManagerServicePMS相关信息
batterystatsBatterystatsService电池统计信息
batteryBatteryService电池信息
alarmAlarmManagerService闹钟信息
dropboxDropboxManagerService调试相关
procstatsProcessStatsService进程统计
cpuinfoCpuBinderCPU
meminfoMemBinder内存
gfxinfoGraphicsBinder图像
dbinfoDbBinder数据库
服务名功能
SurfaceFlinger图像相关
appopsapp使用情况
permission权限
processinfo进程服务
batteryproperties电池相关
audio查看声音信息

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!**

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

  • 23
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值