dumpsys是安卓设备中的一个可执行文件,可以通过adb命令启动,可以用来查看Android系统和应用的各种information的。
查看比如说直接从命令行查看出,电池用量,cpu占用,连得哪个wifi,系统中的进程是怎样的。还可以查看具体哪个APP运行时的Activity,占用内存,有没有内存溢出,还可以查看帧率。这个命令是相当强大。我用mac打开iTerm,然后全屏,敲adb shell dumpsys,纯黑的屏幕上,出现一屏屏的英文,看起来是很赏心悦目的。
说到安卓的内存溢出,今天跟Android的内存溢出杠了一天,晚上就看到了腾旭bugly微信公众号推送的这篇文章安卓内存优化&总结,干货很多。
好了,接下来步入正题。说些经常会用到的dumpsys命令,当然这些命令是各取所需,也不可能全部列出,随用随查好了。
获取cpu的信息
adb shell dump sys cpuinfo
获取内存信息
adb shell dumpsys meminfo
查看某个应用的内存信息,后面添加包名
adb shell dumpsys memento PACKAGE_NAME
获取Activity信息:
adb shell dumpsys activity
获取当前界面的UI信息,可以用:
adb shell dumpsys activity top
要获取当前界面的Activity:
adb shell dumpsys activity top | findstr ACTIVITY
获取package信息:
adb shell dumpsys package
获取某个包的信息:
adb shell dumpsys package PACKAGE_NAME
获取wifi信息:
adb shell dumpsys wifi
可以获取到当前连接的wifi名、搜索到的wifi列表、wifi强度等
上面举了几个例子,dumpsys还能干什么,可以用
adb shell dumpsys service list
来查看。具体能查看什么,可以见这张表

还有这张

还有就是要举一个非常非常实用的例子,来举一反三,就是查看Activity的命令。

cmd又有哪些可选命令?

cmd的选项是可以缩写的,举个例子
查看安卓设备上新浪微博的进程
adb shell dumpsys activity p com.sina.weibo
注意这里的p是cmd中processes的缩写,不是上面提到的option中的-p,cmd中并不是所有都可以缩写,可以缩写的都在上面的表中列着。
dumpsys原理
讲完了用法,就应该在讲一下底层的原理了。dumpsys在Android中是一个可执行cpp文件(cpp文件是用c++编译的),cpp文件的代码不多,我们用dumpsys是要用它的server主要是调用各个java中的方法,调用安卓中的native函数,这些函数里面本身就集成了dump方法。

用defaultServiceManager调用Android的ServiceManager。然后通过函数checkService来找到具体的service, 并执行该service的dump方法。到了Java中,不同的server又有不同函数的调用,这些函数中包含了dump函数。原文举得例子是查看帧率的命令。到Android的Native层去分析了这些函数,真是不容易。其中也提到了权限的问题,也是很值得注意。
写完之后,听了个科技新闻,说苹果收购了workflow团队,workflow是一款iOS商店的APP,用于实现手机上的自动化操作,比如想要实现拍照之后,直接上传到网盘。这时候就可以用workflow实现一个工作流,workflow目前已经免费。
本文引用:
网友评论