1. 常用 dump
1 | adb shell dumpsys activity service com.android.systemui/.SystemUIService > SystemUIService.txt |
2. adb shell settings get
可以用来获取 Android 设备上的系统设置(配置)。
命令格式:adb shell settings get <namespace> <key>
其中 namespace 是设置所在的命名空间,key 是设置的键名(字段)。
system、secure 或 global
1 | system // 包含了一些系统级别的设置,如屏幕亮度、音量等 |
frameworks/base/core/java/android/provider/Settings.java
栗子:
1 | adb shell settings list // 返回所有设置的键名和值 |
3. adb shell getprop/setprop
从系统的各种配置文件中读取一些设备的信息,用来获取 Android 设备上的系统属性。
这些信息可以在手机设备中找到
1 | init.rc |
命令:
1 | adb shell getprop [key] |
4. 快速查看手机中设置项settings
- 先list现有的settings值:
1 | adb shell settings list secure >s1 && adb shell settings list global>g1 && adb shell settings list system>sys1 |
- 操作更改设置项
- list 修改后的settings值
1 | adb shell settings list secure >s2 && adb shell settings list global>g2 && adb shell settings list system>sys2 |
- Diff
1 | diff s1 s2 && diff g1 g2 && diff sys1 sys2 |
5. 开启 buffer log
1 | adb shell cmd statusbar echo -t <tagName>:<level> |
详细:
【参考类】com.android.systemui.log.LogBuffer
LogBuffer 是 SystemUI 记录日志的工具,正常情况下,只有在生成 BugReport 的时候,才会全部转储
【在 logcat 中使用】
正常只有大于等于 warn 级别的,才会回显到 logcat 中;但是它可以通过相关的命令实现回显到 logcat 中
LogBuffer 在构造的时候会传入 name 参数,这个就是 Buffer 的名称
LogBuffer 在记录的时候会传入 tag 和 level 参数,这个是日志的 tag 和级别
在进行回显的时候,可以针对 Buffer 或者针对 Tag 设置 level 级别的回显
- 针对Buffer级别
adb shell cmd statusbar echo -b <bufferName>:<level>1
2
3
4
5
6
7
8
9
10
11
12
13
2. bufferName 在子类构造的时候便会传入,如果是通过注解生成的,大概率是该类名称
3. 也可以通过BugReport去查询下
4. 以NotificationPanelViewController为例,它使用的是ShadeLog,它的Buffer名称就是“ShadeLog”
5. 如果需要将整个ShadeLog全部回显到logcat中,可以执行以下命令
6. adb shell cmd statusbar echo -b ShadeLog:verbose
2. 针对 tag 级别
1. ```Shell
adb shell cmd statusbar echo -t <tagName>:<level>
道理同上,以 ShadeLog 为例,systemui.shade即为 tag
1 | adb shell cmd statusbar echo -t systemui.shade:verbose |
V 上可以用上述命令打开 buffer log,然后 kill 对应进程,这样就可以直接 logcat 实时抓
6. 查找手机内某资源属性
查找当前 dimen – notification_panel_width
1 | adb shell cmd overlay lookup --verbose com.android.systemui com.android.systemui:dimen/notification_panel_width |
7. adb 快速截图
1 | adb exec-out screencap -p > screenshot.png |
- screencap -p 会在手机端生成一张 PNG 格式的屏幕截图;
- exec-out 会把这个 PNG 文件的原始数据流直接输出到电脑;
是把这段数据重定向保存为本地文件 screen.png;
- 整个过程不会在手机上留下文件,也比 adb shell + pull 更快。