dumpsys命令功能很强大,能dump系统服务的各种状态,非常有必要熟悉该命令的用法以及含义。

一、 dumpsys命令

1.1 服务列表

不同的Android系统版本支持的命令有所不同,可通过下面命令查看当前手机所支持的dump服务,先进入adb shell,再执行如下命令:dumpsys -l。 这些服务名或许你并看不出其调用的哪个服务,那么这时可以通过下面指令:service list

表一:

服务名 类名 功能
activity ActivityManagerService AMS相关信息
package PackageManagerService PMS相关信息
window WindowManagerService WMS相关信息
input InputManagerService IMS相关信息
power PowerManagerService PMS相关信息
batterystats BatterystatsService 电池统计信息
battery BatteryService 电池信息
alarm AlarmManagerService 闹钟信息
dropbox DropboxManagerService 调试相关
procstats ProcessStatsService 进程统计
cpuinfo CpuBinder CPU
meminfo MemBinder 内存
gfxinfo GraphicsBinder 图像
dbinfo DbBinder 数据库

表二:

服务名 功能
SurfaceFlinger 图像相关
appops app使用情况
permission 权限
processinfo 进程服务
batteryproperties 电池相关
audio 查看声音信息
netstats 查看网络统计信息
diskstats 查看空间free状态
jobscheduler 查看任务计划
wifi wifi信息
diskstats 磁盘情况
usagestats 用户使用情况
devicestoragemonitor 设备信息
。。。 。。。

未完待续…

1.2 查询服务

通过下面命令可打印具体某一项服务:dumpsys <service>,其中便是前面表格中的服务名,比如:

dumpsys cpuinfo //打印一段时间进程的CPU使用百分比排行榜
dumpsys meminfo -h  //查看dump内存的帮助信息
dumpsys package <packagename> //查看指定包的信息

系统服务非常之多,那么接下来将重点说说其中之一:dumpsys activity用法.

二、 Activity

dumpsys activity [options] [cmd]

下面分别说说options和cmd有哪些可选值

2.1 options

options可选值:

  • -a:dump所有;
  • -c:dump客户端;
  • -p [package]:dump指定的包名;
  • -h:输出帮助信息;

dumpsys activity等价于依次输出下面7条指令:

dumpsys activity intents
dumpsys activity broadcasts
dumpsys activity providers
dumpsys activity services
dumpsys activity recents
dumpsys activity activities
dumpsys activity processes

2.2 cmd

cmd可选值

cmd 解释 缩写
activities activity状态 a
broadcasts 广播 b
intents pending intent状态 i
processes 进程 p
oom 内存溢出 o
services Service状态 s
service service状态(Client端)
providers ContentProvider状态 prov
provider ContentProvider状态(Client端)
associations tracked app associations as
permissions URI permission grant state perm
package package相关信息
all 所有的activities信息
recents recent activity状态 r
top top activity信息
write 将状态持久化到存储区
track-associations 使能association tracking
untrack-associations 禁止和清空association tracking
  • cmd:上表加粗项是指直接跟包名,另外services和providers还可以跟组件名
  • 缩写:基本都是cmd首字母或者前几个字母,用cmd和缩写是等效: dumpsys activity broadcasts dumpsys activity b //等效

三、场景

下面以新浪微博App作为实例,由于输出结果较多,每个场景截图只挑选部分重要的信息。

场景1:查询某个App所有的Service状态

dumpsys activity s com.sina.weibo

解读:

  • Service类名为com.morgoo.droidplugin.PluginManagerService
  • 运行在进程pid=7220,进程名为com.sina.weibo,uid=10094
  • 通过bindService连接该服务的进程pid=7306,进程名为com.sina.weibo:PluginP03

当然还有packageName,baseDir(apk路径),dataDir(apk数据路径),createTime等各种信息。另外,新浪微博采用的是360开源的Android插件机制(com.morgoo.droidplugin),主要用于hotfix等功能。

场景2:查询某个App所有的广播状态

 dumpsys activity s com.sina.weibo

解读:

  • android.intent.action.SCREEN_ON代表手机亮屏广播;
  • 接收该广播的receiver有很多个,其中一个所在进程为pid=7220,进程名为com.sina.weibo

场景3:查询某个App所有的Activity状态

输出结果较多,尤其是View Hierarchy,下面截取部分:

dumpsys activity a com.sina.weibo

解读:

  • 格式:TaskRecord{Hashcode #TaskId Affinity UserId=0 Activity个数=1};所以上图信息解析后就是TaskId=1802,Affinity=com.sina.weibo,当前Task中Activity个数为1。
  • effectiveUid为当前task所属Uid,mCallingUid为调用者Uid=u0a94,mCallingPackage为调用者包名,这里是com.sina.weibo
  • realActivity:task中的已启动的Activity组件名com.sina.weibo/.SplashActivity

场景4:查询某个App的进程状态

dumpsys activity p com.sina.weibo

  • 格式:ProcessRecord{Hashcode pid:进程名/uid},进程pid=7306,进程名为com.sina.weibo:PluginP03,uid=10094.
  • 该进程中还有Services,Connections, Providers, Receivers,可以看出该进程是没有Activity的进程。

其他

还有很多场景,会用到不同的参数,这里就不再一一列举,建议大家多去尝试,慢慢地就更加熟练,再比如:

dumpsys activity top //当前界面app状态
dumpsys activity oom //进程oom状态

dumpsys命令用法相关推荐

  1. dumpsys activity用法汇总

    2020年3月14日11:21:04 一. 概述 1.1 dumpsys 命令用法 可通过 dumpsys 命令查询系统服务的运行状态 (对象的成员变量属性值),命令格式:dumpsys 服务名, 例 ...

  2. android工具am的用法,Android中AM、PM、dumpsys命令使用总结

    在平时开发中,通过命令行有时候能够快速的帮我们实现一些功能,这里对常用的命令做一些总结. 1.AM命令用法 1.1.简单介绍 am指令是 activity manager的缩写,可以启动Service ...

  3. android调试——教你用dumpsys命令调试

    "这一篇就聊聊dumpsys 比较常用的命令" dumpsys 服务 基本用法 adb shell dumpsys [-t timeout] [--help | -l | --sk ...

  4. android dumpsys命令使用

    原址 一. dumpsys命令 1.1 服务列表 不同的Android系统版本支持的命令有所不同,可通过下面命令查看当前手机所支持的dump服务,先进入adb shell,再执行如下命令:dumpsy ...

  5. pm2常用的命令用法介绍

    pm2 是一个带有负载均衡功能的Node应用的进程管理器.当你要把你的独立代码利用全部的服务器上的所有CPU,并保证进程永远都活着,0秒的重载, PM2是完美的,下面我们来看pm2常用的命令用法介绍吧 ...

  6. 7月11日任务 shell介绍、shell结构和执行 、date命令用法、shell脚本中的变量

    2019独角兽企业重金招聘Python工程师标准>>> 20.1 Shell脚本介绍 • shell是一种脚本语言  aming_linux  blog.lishiming.net ...

  7. 常见Shell命令用法总结

    2019独角兽企业重金招聘Python工程师标准>>> 常见命令用法总结 -----  目录:  --- 关于grep的总结   关于egrep的总结   关于tr的总结  关于so ...

  8. getprop 与 dumpsys 命令

    Android 设备连接 PC 后,我们可以通过 adb 命令完成绝大多数工作.下面借助 getprop.dumpsys 来了解一些系统相关信息. 一.getprop 此命令的原理很简单,就是从系统的 ...

  9. linux 指令tftp传输文件_Linux tftp 命令用法详解-Linux命令大全(手册)

    tftp 在本机和tftp服务器之间使用TFTP协议传输文件 补充说明 tftp命令 用在本机和tftp服务器之间使用TFTP协议传输文件. TFTP是用来下载远程文件的最简单网络协议,它其于UDP协 ...

最新文章

  1. c语言卡尔曼函数库,kalman之c语言实现
  2. 如何解决分布式系统中的“幽灵复现”?-转载自 阿里技术 微信公众号
  3. [HNOI2015] 接水果(倍增 + 整体二分)
  4. python画图实战_python实战学习之matplotlib绘图续
  5. Win2008 R2 VDI动手实验系列之二:远程桌面虚拟化主机配置
  6. ffmpeg常用命令(windows)
  7. C语言基础学习教程之数据类型
  8. Sentence-BERT实战
  9. maven pom文件的一些自己的理解
  10. ROS教程之使用UVC摄像头
  11. Windows 超级终端设置
  12. 关于foobar2000中Convolver,大家觉得哪个Impulse效果最好?
  13. 360怎样修改wifi服务器,360路由器怎么设置无线网络
  14. twitter要我绑定手机_Twitter我的糖尿病
  15. 32岁想转嵌入式软件开发来得及吗?参加嵌入式培训好不好?
  16. redis搭建三主三从架构
  17. 第七周 任务一
  18. 肠胃不好吃什么调理?
  19. C语言入门 hello world
  20. 用PHP读取S60(Symbian)安装文件sisx的应用UID

热门文章

  1. 关于svn目录地址迁移
  2. Android中如何查看内存(下)
  3. IDC评述网:1月下旬国内域名注册商净增量Top10
  4. SDUT 2170 The Largest SCC bfs+tarjan
  5. Android 学习 笔记_07. XML文件解析
  6. JavaScript 游戏开发包-收集
  7. NLP --- 条件随机场CRF详解
  8. Vue中子组件向父组件请求数据时的数据格式问题
  9. (转载)学习Javascript闭包(Closure)
  10. python检测数据库弱密码