Android APP Profile 监控分析使用说明文档
目录
简介
Android APP Profile监控分析是Android开发中一个非常重要的环节,它帮助开发者识别并解决应用在性能、内存、网络和电池使用方面的瓶颈。通过Android Studio内置的Profiler工具,我们可以实时监控应用的运行状态,捕获性能数据,并进行深入分析以优化应用。
Android Profiler概述
Android Profiler是Android Studio中的一套性能分析工具,主要包括四个核心组件:
- CPU Profiler - 分析应用CPU使用情况
- Memory Profiler - 跟踪内存使用和分配
- Network Profiler - 分析网络活动
- Energy Profiler - 检查能源消耗
这些工具可以帮助开发者识别应用响应缓慢、动画卡顿、崩溃或耗电过快等问题。
系统要求
为了使用Android Profiler,需要满足以下条件:
- 应用的AndroidManifest.xml文件中包含
<profileable android:shell="true" />
设置(默认已启用) - 测试设备运行API级别29或更高版本,并安装了Google Play服务
- 使用Android Gradle插件7.3或更高版本
CPU性能分析
系统跟踪(System Trace)
系统跟踪视图展示了整个系统的活动和资源使用情况,可以让你看到应用进程是如何被调度和执行的。主要用途包括:
- 查看应用和系统进程在设备核心和线程上的分布情况。
- 分析UI渲染的流畅性。
- 观察设备和应用层面的功耗。
常用可视化图表
在记录系统跟踪数据后,你将看到以下几种图表:
- CPU 使用率:显示你的应用在总可用CPU容量中的使用百分比。
- 交互:在时间轴上显示用户交互和应用生命周期事件(需要可调试的应用进程和API 26或更高版本的设备)。
- 显示:提供有关应用UI渲染平滑度的信息。选择"生命周期"可以检查应用在主线程和RenderThread上渲染每一帧所花费的时间,有助于调查导致UI卡顿和低帧率的瓶颈。
- 线程:显示应用和各种系统进程运行的线程。你可以通过快捷键操作:
- 放大:按W或在按住Ctrl(macOS上是Command)的同时滚动鼠标滚轮。
- 缩小:按S或在按住Ctrl(macOS上是Command)的同时向后滚动鼠标滚轮。
- 向左移动:按A或在按住空格键的同时向右拖动鼠标。
- 向右移动:按D或在按住空格键的同时向左拖动鼠标。
- 展开或折叠线程:双击线程名称或在选中线程时按Enter。
- CPU 核心:显示设备上每个核心的活动情况,可以区分"大"核和"小"核。
- 进程内存(RSS):显示应用当前使用的物理内存量。
- 电源轨:当你在物理设备上进行性能分析时出现,用于检查功耗。
- 电池:显示你的应用的电池使用情况。
内存使用分析
捕获堆转储
捕获堆转储以查看应用程序在捕获时刻哪些对象占用了内存,并识别内存泄漏或导致应用不稳定、崩溃甚至卡顿的内存分配行为。
堆转储概述
要捕获堆转储,请选择任务"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)是一个用于实时监控网络活动的工具,它以时间轴形式显示网络请求,帮助开发者了解应用的网络性能并进行优化。
打开网络分析器
- 在Android Studio的导航栏中,选择View > Tool Windows > App Inspection。
- 在应用检查窗口连接后,选择Network Inspector标签页。
- 选择你想要检查的设备和应用进程。
网络分析器界面
- 活动时间轴:顶部显示网络活动的时间轴。可以通过点击并拖动来选择特定时间段进行详细查看。
- 连接视图(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传感器的功耗。
使用流程
-
创建并运行可分析应用:
- 设置运行/调试配置
- 选择发布版本类型
- 运行分析任务
-
启动分析过程:
- 在Android Profiler面板中选择目标进程
- 选择分析任务类型
- 决定是否从应用启动开始分析
- 启动分析任务并与应用交互
- 停止记录并查看结果
-
分析结果:
- 可以比较不同场景下的资源使用情况
- 导出和导入分析记录
- 调整记录设置(采样间隔和最大文件大小)
参考源
- Android Developers - CPU Profiler
- Android Developers - Memory Profiler
- Android Developers - Network Profiler
- Android Developers - Energy Profiler
- Android Developers - Android Profiler Overview
这份文档为你提供了Android APP Profile监控分析的全面指南,涵盖了Profiler工具的各个方面。通过使用这些工具,你可以更好地了解应用的性能表现,并针对性地进行优化。