Android Studio 3.0 采用全新的 **Android Profiler ** 窗口取代 Android Monitor 工具。 这些全新的分析工具能够提供关于应用 CPU、内存和网络 Activity 的实时数据。 您可以执行基于样本的函数跟踪来记录代码执行时间、采集堆转储数据、查看内存分配,以及查看网络传输文件的详情。
要打开 Android Profiler 窗口,请按以下步骤操作:
-
点击 View > Tool Windows > Android Profiler(也可以点击工具栏中的 Android Profiler
)。
-
在 Android Profiler 窗口顶部(如图 1 所示),选择您想要分析的设备 1 和应用进程 2。
如果您通过 USB 连接了某个设备但该设备未在设备列表中列出,请确保您已启用 USB 调试。
如果您使用的是 Android Emulator 或已取得 root 权限的设备,Android Profiler 将列出所有正在运行的进程,即使这些进程可能无法调试。 当您发布可调试应用时,将会默认选择此进程。
Android Profiler 目前可显示共享时间线视图(图 1),其中包括带有 CPU、内存和网络使用信息实时图表的时间线。 分析器窗口还包含时间线缩放控件 3、实时更新跳转按钮 4,以及显示 Activity 状态、用户输入 Event 和屏幕旋转 Event 的 Event 时间线5。
当您启动 Android Profiler 后,它会持续收集分析数据,直至您断开设备连接或点击 Close
。
[图片上传失败...(image-b12c61-1552381527876)]
图 1. Android Profiler 共享时间线视图 此共享时间线视图只显示时间线图表。 要使用详细分析工具,请点击与您想查看的性能数据对应的图表。 例如,要使用工具查看堆数据和跟踪内存分配,可点击 MEMORY 图表。 以下链接页面介绍了各个对应分析器窗口的更多信息。
但并不是所有分析数据均默认可见。 如果您看到一条消息,显示“Advanced profiling is unavailable for the selected process”,则需在运行配置中启用高级分析 。
要详细了解各个分析工具,请参阅以下内容:
<devsite-heading ds-is="heading" text="启用高级分析" id="advanced-profiling" level="h3" link="" toc="" class="" style="box-sizing: inherit; display: block; margin-right: -40px !important; padding-right: 40px !important; color: rgb(32, 33, 36); font-family: Roboto, sans-serif; font-size: 16px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-style: initial; text-decoration-color: initial;">### 启用高级分析</devsite-heading>
要显示高级分析数据,Android Studio 必须在您编译后的应用中插入监控逻辑。 高级分析工具提供的功能包括:
- Event 时间线(所有分析器窗口中均有)
- 分配对象数量(Memory Profiler 中)
- 垃圾回收 Event(Memory Profiler 中)
- 有关所有传输的文件的详情(Network Profiler 中)
要启用高级分析,请按以下步骤操作:
- 选择 Run > Edit Configurations。
- 在左侧窗格中选择您的应用模块。
- 点击 Profiling 标签,然后勾选 Enable advanced profiling。
现在重新构建并运行您的应用,即可获取完整的分析功能。 但请注意,高级分析会减缓您的构建速度,所以仅当您想要开始分析应用时才启用此功能。
注:对于原生代码,不可使用高级分析功能。 如果您的应用是纯原生应用(不含 Java Activity
类),则不可使用高级分析功能。 如果您的应用使用了 JNI,则可使用部分高级分析功能,例如 Event 时间线、GC Event、Java 分配对象和基于 Java 的网络 Activity,但不能检测基于原生的分配和网络 Activity。