如果应用程序响应缓慢、动画不连贯、死机或耗电过多,则该应用程序被认为性能不佳。解决性能问题涉及识别您的应用程序在哪些方面使用资源效率低下,例如CPU、内存、图形、网络或设备电池。
Android Studioo提供了多种分析该工具来帮助发现和可视化潜在问题:
- CPU分析器:有助于追踪运行时性能问题。
- 内存分析:有助于跟踪内存分配。
- Network profile:监控网络流量使用情况。
- 能源分析器:跟踪能源使用情况,这可能会导致电池耗尽。
- Android Profile显示当前正在分析的进程和设备。
- 在”SESSIONS“窗口中,选择要查看的会回话,或启动新的分析回话。
- 使用缩放按钮控制要查看多少时间线,或使用”附加到实时“按钮条朱涵到实时更新。
- 事件事件线显示与用户输入相关的事件,包括键盘活动、音量控制更改和屏幕旋转。
- 共享时间线试图,其中包括CPU、内存、网络和能源使用情况的图表。
Jetpack Benchmark库允许您的应用程序测量各种重要操作:
- Macrobenchmark:衡量重要的性能用例,包括应用程序启动和由UI动画或滚动等操作触发的重绘。
- Microbenchmark:衡量特定功能的CPU成本。
可配置的应用程序
Profileable
是Android Q中引入的manifest配置,可以指定设备的用户是否可以通过Android Studio、Simpleperf、Perfetto等工具对这个应用进行profile。
再profileable
之前,大多数开发人员只能在Android上分析可调式的应用程序,这会增加显著的性能成本作为副作用,这些性能成本可能会使分析结果无效,尤其是当它们与时间相关时。
下面的表总结了可调试应用程序和配置应用程序之间的差异。
特征 | 可调试 | 可配置的 |
---|---|---|
内存分析器 | 全量 | 包含:默认视图、本机内存分析器 |
不包含 - 事件时间表、堆转储、实时分配记录 | ||
CPU分析器 | 全量 | 包含:默认视图、UI启动的记录 |
不包含 - 事件时间表、显示API发起的录制状态 | ||
网络分析器 | 包含 | 不包含 |
电量分析器 | 包含 | 不包含 |
事件监视器 | 包含 | 不包含 |
Profileable
已经被引入,因此开发人员可以选择允许它们的应用程序信息公开给分析工具,同时产生非常少的性能成本。可配置的APK本质上是一个发布的APK,在清单文件的<application>
部分添加一行<profileable android:shell="true"/>
。
要构建可配置应用程序,您需要先构建一个发布应用程序,然后更新其清单文件,这会将发布应用程序变为可配置应用程序。
构建发布应用
要构建用于分析的发布应用程序,请执行以下操作:
- 在
build.gradle
文件里面添加debug签名,如果你已经有一个发布的版本,可以跳过这一步。
buildTypes {
release {
signiingConfig signingConfigs.debug
}
}
- 在Android Studio,选择
Build > Select Build Variant...
并选择release变量。
将版本更改为可配置
- 通过打开
AndroidManifest.xml
文件并在<application>
中添加以下内容,将上面发布应用程序转换为可配置应用程序。
<profileable android: shell="true">
- 根据SDK版本,你可能在应用层的
build.gradle
文件添加下面这一行
aaptOptions {
additionalParameters = ["--warn-manifest-vvallidation"]
}
剖析一个可剖析的应用程序
要分析可分析的应用程序,请执行以下操作:
- 从开发模拟器或设备,启动应用程序
- 在Android Studio中,通过选择View > Tool Windows > Prodiler启动分析器。
- 应用程序启动后,单击
+
分析器中的按钮以查看下拉菜单。选择你的设备,然后在Other profileable processes下选择应用程序条目。
- 检查器应附加到应用程序。只有CPU和内存分析器可用,内存分析器的功能有限。