您的位置:首页 > 运维架构

Android系统getprop、dumpsys等相关命令的理解

2018-01-07 01:38 826 查看
通过上一篇理解及使用adb知道通过adb 工具来调试android 程序。

这里讲一下,用android提供的一些命令来调试android程序。

getprop

此命令的原理很简单,就是从系统的各种配置文件中读取信息。那么这些文件在你用adb shell进入设备内部后很容易找到,它们是:

init.rc

default.prop

/system/build.prop

在android studio 中就有终端这个窗口直接执行命令就行。标注的三个文件可以通过adb pull命令拷贝到本地直接查看。

在命令行执行getprop命令,则会输出很多系统信息:

?
比如[ro.build.version.release]: [5.0.2] 系统版本,[ro.build.version.sdk]: [21] sdk版本[qemu.sf.lcd_density]: [420]设备屏幕密度

直接执行getprop输出信息太多,可以选择输出某个你需要的,例如:

?
dumpsys

用于查看系统服务信息

我们可以直接执行dumpsys命令,会将所有服务信息都列出来。但是这样得到的结果太多,不容易拿到有效的信息,可以在命令后面加上相应的参数来得到具体的服务信息。

使用下面的命令来查看可以dump出的所有service:

?
从中可以看到我们常见的一些服务。 activity表示的是ActivityManagerService,用于管理应用程序的四大组件,window表示的是WindowManagerService,用于管理系统中的窗口.

使用 dumpsys [service]这样格式,可以查看该服务的一些信息:

?
上面打印了关于ActivityManagerService的信息,比较多。
简单说明一下

我们知道android应用程序的四大组件中有三个是由intent来驱动的。所以在ActivityManagerService的信息中,专门有一部分来记录当前待处理的Intent, 称为pending intent 。每个待处理的intent在ActivityManagerService内部使用一个PendingIntentRecord对象表示, 并且会显示出所在应用的包名, 并且会指定该intent是用来发送广播, 启动activity或是启动service。直接在shell中键入dumpsys activity
intents, 会直接得到这些信息

?
下面行开始的信息是系统中的broadcast receiver的状态信息,分注册的,前台的,后台的。如果单独想看这部分信息,直接执行
dumpsys activity broadcast

?
下面行开始是provider相关的信息

?
下面行开始是服务(Service)相关的信息

?
下面行开始是Activity相关的信息

?
这部分信息平时应该有用到,用来看activity属于哪个任务栈。
Android中的task作用和Activity启动模式以及各种启动Flag的含义在讲这个的时候就是查看这个信息的。

关于其他的服务信息就没去一一查看了。这里只是演示一下该工具的使用。

logcat

用于得到log信息,查看系统日志缓冲区的内容

一般用法

logcat [

选项:

-b 指定要查看的日志缓冲区,可以是system,events,radio,main. 默认值是system和main。

-c清楚屏幕上的日志.

-d输出日志到屏幕上.

-f 指定输出日志信息的 ,默认是stdout .

-g输出指定的日志缓冲区,输出后退出.

-n 设置日志的最大数目 .,默认值是4,需要和 -r 选项一起使用。

-r 每 时输出日志,默认值为16,需要和-f 选项一起使用.

-s设置默认的过滤级别为silent.

-v 设置日志输入格式,默认的是brief 格式,要知道更多的支持的格式,参看Controlling Log Output

参数

参数用于对某类的tag的日志输出进行过滤。每一个输出的Android日志信息都有一个tag和它的优先级.

例如现在:

?
点击floatingaAtionButton ,打印的日志

?
这些工具对我们调试android 程序很有帮助,所以有必要了解怎么使用。

转载地址:https://www.2cto.com/kf/201610/554739.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  adbgetprop dumpsys