章节索引 :

Android 分析工具介绍

前面的小节我们学习了 Android 模拟器工具。本小节我们学习 Android 分析工具。

1. 概述

Android 分析工具位于以下位置:android_sdk/platform-tools/

主要的命令行工具有如下这些:

  • dumpsys
    一种在 Android 设备上运行的工具,可提供有关系统服务的信息。

  • dmtracedump
    一种用于从跟踪日志文件生成图形化的调用堆栈图的工具。

  • systrace
    借助该工具收集和检查设备上在系统一级运行的所有进程的时间信息。

2. dumpsys

dumpsys 是一种在 Android 设备上运行的工具,可提供有关系统服务的信息。我们可以使用 Android 调试桥 (ADB) 从命令行调用 dumpsys,获取在连接的设备上运行的所有系统服务的诊断输出。此输出通常比我们想要的更详细,因此我们可以使用下文所述的命令行选项仅获取我们感兴趣的系统服务的输出。

2.1 语法

adb shell dumpsys [-t timeout] [--help | -l | --skip services | service [arguments] | -c | -h]

要获取所连接设备的所有系统服务的诊断输出,只需运行 adb shell dumpsys。不过,这样输出的信息比我们通常想要的信息多得多。要使输出更加可控,我们可以通过在命令中添加相应服务来指定要检查的服务。例如,下面的命令会提供输入组件(如触摸屏或内置键盘)的系统数据:

adb shell dumpsys input

如需查看可与 dumpsys 配合使用的系统服务的完整列表,请使用以下命令:

adb shell dumpsys -l

2.2 命令选项

命令选项 说明
-t 指定超时期限(秒)。
–help 输出 dumpsys 工具的帮助文本。
-l 输出可与 dumpsys 配合使用的系统服务的完整列表。
–skip 指定不希望包含在输出中的服务。
service 指定希望输出的服务。
-c 指定某些服务时,附加此选项能以计算机可读的格式输出数据。
-h 对于某些服务,附加此选项可查看该服务的帮助文本和其他选项。

3. dmtracedump

dmtracedump 是一种用于从跟踪日志文件生成图形化的调用堆栈图的工具。此工具使用 Graphviz Dot 实用程序创建图形化的输出,因此我们必须先安装 Graphviz,才能运行 dmtracedump。如果尚未生成跟踪日志并将其从连接的设备保存到本地计算机,请参阅通过检测我们的应用生成跟踪日志。dmtracedump 工具以树形图的形式生成调用堆栈数据,其中每个节点表示一个方法调用。

3.1 语法

dmtracedump [-ho] [-s sortable] [-d trace-base-name] [-g outfile] trace-base-name

3.2 全局选项

命令选项 说明
-h 开启 HTML 输出
-o 转储跟踪文件,而不是进行剖析

3.3 命令选项

命令选项 说明
-d 以此跟踪名称作为参数运行 diff。
-g 生成 outfile 输出。
-s 可排序 JavaScript 文件所在位置的基址。
-t 在图表中包含子节点的最低阈值。

4. systrace

systrace 命令会调用 Systrace 工具,我们可以借助该工具收集和检查设备上在系统一级运行的所有进程的时间信息。

4.1 语法

python systrace.py [options] [categories]

例如,以下命令会调用 systrace 来记录设备活动,并生成一个名为 mynewtrace.html 的 HTML 报告。此类别列表是大多数设备的合理默认列表。

python systrace.py -o mynewtrace.html sched freq idle am wm gfx view \
    binder_driver hal dalvik camera input res

如需查看已连接设备支持的类别列表,请运行以下命令:

python systrace.py --list-categories

4.2 全局选项

命令选项 说明
–help 显示帮助消息。
–list-categories 列出已连接设备可用的跟踪类别。

4.3 命令选项

命令选项 说明
-o 将 HTML 跟踪报告写入指定的文件。
–time 设置跟踪设备活动时间。
–buf-size 设置跟踪缓冲区大小。
–ktrace 跟踪逗号分隔列表中指定的特定内核函数的活动。
–app 启用对应用的跟踪,指定为包含进程名称的逗号分隔列表。
–from-file 根据文件创建交互式 HTML 报告,而不是运行实时跟踪。
–serial 在已连接的特定设备上进行跟踪。
categories 包含指定的系统进程的跟踪信息,如 gfx 表示用于渲染图形的系统进程。

5. 小结

本节课程我们主要学习了 Android 分析工具。本节课程的重点如下:

  • 掌握如何使用 Android 分析工具。