如果应用响应速度慢、动画播放不流畅、卡顿或耗电量过高,就表示应用的性能不佳。若要解决性能问题,就需要找出应用的哪些方面导致不能高效地利用资源(例如 CPU、内存、图形、网络或设备电池)。
为了找出并解决这些问题,您可以使用本主题中介绍的性能分析和基准化分析工具与技巧。如需了解衡量性能的技巧,以及关于如何利用这些技巧解决具体问题的示例,请参阅衡量性能。
Android Studio 提供了一些性能分析工具来帮助您找出并直观呈现潜在的问题:
- CPU 性能分析器有助于查出运行时性能问题。
- 内存分析器有助于跟踪内存分配情况。
- 能耗性能分析器可跟踪能耗情况,这有助于分析电池电量消耗过快的问题。
这些工具与 Android 5.0(API 级别 21)及更高版本兼容。如需详细了解这些工具,请参阅用户指南这一部分中的其他页面。
借助 Jetpack 基准库,您的应用可衡量各种重要操作:
- Macrobenchmark:测量重要的性能用例,包括应用启动以及由界面动画或滚动等操作触发的重新绘制。
- Microbenchmark:测量特定函数的 CPU 开销。
如需详细了解这些库,请参阅对您的应用进行基准测试页面。
可分析应用
Profileable
是在 Android Q 中引入的清单配置。它可以指定设备用户能否通过 Android Studio、Simpleperf 和 Perfetto 等工具对此类应用进行性能分析。
在 profileable
之前,大多数开发者只能对 Android 上的可调试应用进行性能分析,这会导致性能显著下降。这些性能下降可能会导致分析结果无效,尤其是当它们与时间有关时。表 1 总结了可调试应用和可分析应用之间的区别。
功能 | 可调试 | 可分析 |
---|---|---|
内存分析器 | 完整 |
是: 否: |
CPU 性能分析器 | 完整 |
是:
否:
|
网络性能分析器 | 是 | 否 |
能耗性能分析器 | 是 | 否 |
功耗性能分析器 | 是 | 是 |
事件监视器 | 是 | 否 |
引入了 Profileable
,以便开发者可以选择允许其应用向分析工具公开信息,同时导致的性能下降微乎其微。可分析 APK 实质上是在清单文件所含 <application>
部分内添加了一行 <profileable android:shell="true"/>
的发布版 APK。
自动构建和运行可分析应用
只需点击一下,即可配置、构建并运行可分析应用。此功能需要搭载 Android 29 或更高级别且具有 Google Play 的虚拟或实体测试设备。如需使用该功能,请点击 Profile app 图标 旁边的箭头,然后从两个选项中进行选择:
![一键式可分析 build 菜单。](https://developer.android.google.cn/static/studio/images/one-click-profileable-build-menu.png?authuser=0000&hl=nb)
Profile 'app' with low overhead 会启动 CPU 性能分析器和内存分析器。在内存分析器中,只有 Record Native Allocations 为启用状态。
Profile 'app' with complete data 会启动 CPU 性能分析器、内存分析器和能耗性能分析器。
手动构建和运行可分析应用
如需手动构建可分析应用,您需要先构建发布版应用,然后更新其清单文件,将发布版应用转换为可分析应用。配置可分析应用后,启动性能分析器并选择要分析的可分析进程。
构建发布版应用
如需出于性能分析目的构建发布版应用,请执行以下操作:
-
使用调试密钥为应用签名,方法是将以下几行代码添加到应用的
build.gradle
文件。如果您已有有效的发布 build 变体,则可以跳到下一步。buildTypes { release { signingConfig signingConfigs.debug } }
-
在 Android Studio 中,依次选择 Build > Select Build Variant...,然后选择发布变体。
将发布版应用更改为可分析应用
-
打开
AndroidManifest.xml
文件并在<application>
内添加以下代码,将上述发布版应用转换为可分析应用。如需了解详情,请参阅构建应用以进行发布。<profileable android:shell="true"/>
-
您可能需要将以下几行代码添加到应用的
build.gradle
文件中,具体取决于 SDK 版本。aaptOptions { additionalParameters =["--warn-manifest-validation"] }
对可分析应用进行性能分析
如需对可分析应用进行性能分析,请执行以下操作:
-
从开发模拟器或设备启动应用。
-
在 Android Studio 中,依次选择 View > Tool Windows > Profiler 来启动性能分析器。
-
应用启动后,点击性能分析器中的
按钮以查看下拉菜单。选择您的设备,然后在 Other profileable processes 下选择应用对应的条目。
-
性能分析器应附加到应用。只有 CPU 和内存分析器可用,而且内存分析器的功能有限。
会话
您可以将性能分析器数据另存为会话,这些会话将一直保留,直到您退出 Android Studio。通过在多个会话中记录性能分析信息并在它们之间进行切换,您可以比较各种场景中的资源使用情况。
- 如需启动一个新的会话,请点击 Start a new profiling session
按钮,然后从出现的下拉菜单中选择一个应用进程。
- 在您记录轨迹或捕获堆转储时,Android Studio 会将相应数据(以及您应用的网络活动)作为单独的条目添加到当前会话。
- 如需停止向当前会话添加数据,请点击 Stop the current profiling session 图标
。
- 如需导入之前运行 Android Studio 时导出的轨迹,请点击 Start new profiler session 图标
,然后选择 Load from file。
为旧款设备(API 26 以下级别)启用额外的支持
如需在运行搭载 Android 7.1 或更低版本的设备时向您显示额外的性能分析数据,Android Studio 必须将监控逻辑注入您编译的应用。这些额外的性能分析数据包括:
- 所有性能分析器窗口中的事件时间轴
- 内存性能分析器中已分配对象的数量
- 内存性能分析器中的垃圾回收事件
- 网络性能分析器中有关所有已传输文件的详细信息
如需为旧款设备启用额外的支持,请按以下步骤操作:
- 依次选择 Run > Edit Configurations。
- 在左侧窗格中选择您的应用模块。
- 点击 Profiling 标签页,然后选中 Enable additional support for older devices (API level < 26)。
- 再次构建并运行您的应用。
为旧款设备启用额外的支持会使构建流程变慢,所以只有在您想要开始分析应用的性能时,才应启用这种支持。
运行独立性能分析器
借助独立 Android Studio 性能分析器,您可以分析应用的性能,而无需运行完整的 Android Studio IDE。
如需运行独立性能分析器,请执行以下操作:
- 确保性能分析器当前未在 Android Studio 中运行。
转到安装目录,然后转到
bin
目录:Windows/Linux:
studio-installation-folder/bin
macOS:macOS 不支持使用独立的性能分析器。
- 根据您的操作系统,运行
profiler.exe
或profiler.sh
。系统随即会显示 Android Studio 启动画面。启动画面消失后,系统会打开性能分析器窗口。