Android APP Profile 监控分析使用说明文档

49 阅读7分钟

Android APP Profile 监控分析使用说明文档

目录

  1. 简介
  2. Android Profiler概述
  3. 系统要求
  4. CPU性能分析
  5. 内存使用分析
  6. 网络活动分析
  7. 能耗分析
  8. 使用流程
  9. 参考源

简介

Android APP Profile监控分析是Android开发中一个非常重要的环节,它帮助开发者识别并解决应用在性能、内存、网络和电池使用方面的瓶颈。通过Android Studio内置的Profiler工具,我们可以实时监控应用的运行状态,捕获性能数据,并进行深入分析以优化应用。

Android Profiler概述

Android Profiler是Android Studio中的一套性能分析工具,主要包括四个核心组件:

  1. CPU Profiler - 分析应用CPU使用情况
  2. Memory Profiler - 跟踪内存使用和分配
  3. Network Profiler - 分析网络活动
  4. Energy Profiler - 检查能源消耗

这些工具可以帮助开发者识别应用响应缓慢、动画卡顿、崩溃或耗电过快等问题。

系统要求

为了使用Android Profiler,需要满足以下条件:

  • 应用的AndroidManifest.xml文件中包含<profileable android:shell="true" />设置(默认已启用)
  • 测试设备运行API级别29或更高版本,并安装了Google Play服务
  • 使用Android Gradle插件7.3或更高版本

CPU性能分析

系统跟踪(System Trace)

系统跟踪视图展示了整个系统的活动和资源使用情况,可以让你看到应用进程是如何被调度和执行的。主要用途包括:

  1. 查看应用和系统进程在设备核心和线程上的分布情况。
  2. 分析UI渲染的流畅性。
  3. 观察设备和应用层面的功耗。

常用可视化图表

在记录系统跟踪数据后,你将看到以下几种图表:

  1. CPU 使用率:显示你的应用在总可用CPU容量中的使用百分比。
  2. 交互:在时间轴上显示用户交互和应用生命周期事件(需要可调试的应用进程和API 26或更高版本的设备)。
  3. 显示:提供有关应用UI渲染平滑度的信息。选择"生命周期"可以检查应用在主线程和RenderThread上渲染每一帧所花费的时间,有助于调查导致UI卡顿和低帧率的瓶颈。
  4. 线程:显示应用和各种系统进程运行的线程。你可以通过快捷键操作:
    • 放大:按W或在按住Ctrl(macOS上是Command)的同时滚动鼠标滚轮。
    • 缩小:按S或在按住Ctrl(macOS上是Command)的同时向后滚动鼠标滚轮。
    • 向左移动:按A或在按住空格键的同时向右拖动鼠标。
    • 向右移动:按D或在按住空格键的同时向左拖动鼠标。
    • 展开或折叠线程:双击线程名称或在选中线程时按Enter。
  5. CPU 核心:显示设备上每个核心的活动情况,可以区分"大"核和"小"核。
  6. 进程内存(RSS):显示应用当前使用的物理内存量。
  7. 电源轨:当你在物理设备上进行性能分析时出现,用于检查功耗。
  8. 电池:显示你的应用的电池使用情况。

内存使用分析

捕获堆转储

捕获堆转储以查看应用程序在捕获时刻哪些对象占用了内存,并识别内存泄漏或导致应用不稳定、崩溃甚至卡顿的内存分配行为。

堆转储概述

要捕获堆转储,请选择任务"Analyze Memory Usage(Heap Dump)"。在转储堆期间,Java内存可能会暂时增加。这是正常的,因为堆转储发生在与应用相同的进程中,并且需要内存来收集数据。

类列表显示以下信息:

  • 分配数(Allocations):显示堆中包含的分配数量。
  • 本地大小(Native Size):该类型对象使用的本地内存总量(以字节为单位)。
  • 浅层大小(Shallow Size):该类型对象使用的Java内存总量(以字节为单位)。
  • 保留大小(Retained Size):由于该类所有实例而保留的内存总量(以字节为单位)。

查找内存泄漏

要快速过滤可能与内存泄漏相关的类,打开类下拉菜单并选择"Show activity/fragment leaks"。Android Studio将显示它认为在应用中指示Activity和Fragment实例内存泄漏的类。

要更手动地查找内存泄漏,请浏览类和实例列表,寻找保留大小较大的对象。查找由以下任何原因引起的内存泄漏:

  • 对Activity Context、View、Drawable和其他可能包含对容器Activity或Context引用的对象的长期引用。
  • 非静态内部类,如Runnable,可能包含Activity实例。
  • 存储对象时间超过必要的缓存。

网络活动分析

网络分析器(Network Inspector)概述

网络分析器(Network Inspector)是一个用于实时监控网络活动的工具,它以时间轴形式显示网络请求,帮助开发者了解应用的网络性能并进行优化。

打开网络分析器

  1. 在Android Studio的导航栏中,选择View > Tool Windows > App Inspection
  2. 在应用检查窗口连接后,选择Network Inspector标签页。
  3. 选择你想要检查的设备和应用进程。

网络分析器界面

  • 活动时间轴:顶部显示网络活动的时间轴。可以通过点击并拖动来选择特定时间段进行详细查看。
  • 连接视图(Connection View):列出在选定时间轴部分期间发送或接收的文件,包括大小、类型、状态和传输详情。可以对列表进行排序。
  • 消息序列视图(Message Sequence View):显示每个CPU线程的网络活动,表明哪些线程负责哪个网络请求。
  • 规则视图(Rules View):允许你创建规则来模拟不同的响应(如不同的状态码、头部和正文),以便测试应用在不同情况下的行为。

支持的库

网络分析器支持以下网络库:

  • HttpsURLConnection
  • OkHttp
  • 使用OkHttp的第三方库(如Retrofit)

能耗分析

能量分析器(Energy Profiler)概述

Energy Profiler可以帮助开发者分析应用在设备上的能耗情况。从Android Studio Hedgehog版本开始,它通过On Device Power Rails Monitor (ODPM)显示能耗数据,将信息分段显示为不同的"Power Rails"(电源轨)。

可分析的Power Rails

ODPM报告所有可分析的电源轨,适用于Android 10(API级别29)及更高版本,以及Pixel 6及后续Pixel设备。以下是一些常见的电源轨及其描述:

  • CPU Big: 大核CPU的功耗。
  • CPU Little: 小核CPU的功耗。
  • CPU Mid: 中核CPU的功耗。
  • Camera: 相机传感器的功耗。
  • Cellular: 蜂窝传感器的功耗。
  • Display: 显示屏的功耗。
  • GPS: GPS传感器的功耗。
  • GPU: GPU传感器的功耗。
  • Memory: RAM内存传感器的功耗。
  • Sensor core: 其他设备传感器的功耗。
  • UFS (disk): 存储设备(磁盘)的功耗。
  • WLAN: WiFi传感器的功耗。

使用流程

  1. 创建并运行可分析应用:

    • 设置运行/调试配置
    • 选择发布版本类型
    • 运行分析任务
  2. 启动分析过程:

    • 在Android Profiler面板中选择目标进程
    • 选择分析任务类型
    • 决定是否从应用启动开始分析
    • 启动分析任务并与应用交互
    • 停止记录并查看结果
  3. 分析结果:

    • 可以比较不同场景下的资源使用情况
    • 导出和导入分析记录
    • 调整记录设置(采样间隔和最大文件大小)

参考源

  1. Android Developers - CPU Profiler
  2. Android Developers - Memory Profiler
  3. Android Developers - Network Profiler
  4. Android Developers - Energy Profiler
  5. Android Developers - Android Profiler Overview

这份文档为你提供了Android APP Profile监控分析的全面指南,涵盖了Profiler工具的各个方面。通过使用这些工具,你可以更好地了解应用的性能表现,并针对性地进行优化。