对于较大的项目或者实现大量自定义编译逻辑的项目,您可能需要深入了解编译流程才能找到瓶颈。为此,您可以分析 Gradle 执行编译生命周期的每个阶段和每个编译任务所需的时间。例如,如果编译分析报告显示 Gradle 在配置项目时花费了过多的时间,则表明您需要将自定义编译逻辑移出配置阶段。此外,如果 mergeDevDebugResources
任务占用了大量编译时间,则表明您还需要将图片转换为 WebP 格式或停用 PNG 处理。
要通过分析报告提高编译速度,通常需要在启用分析功能的情况下运行编译,对编译配置进行一些调整,以及进行更多分析来观察更改的结果。
要生成和查看编译分析报告,请按以下步骤操作:
- 在 Android Studio 中打开项目后,依次选择 View > Tool Windows > Terminal,以在项目的根目录下打开命令行。
- 输入以下命令,以执行整洁编译版本。在分析编译版本时,您应该在分析的每个编译之间执行整洁编译,这是因为如果某个任务的输入内容(例如源代码)未发生更改,Gradle 就会跳过它。因此输入内容未发生更改的第二个编译版本始终会以更快的速度运行,因为任务不会重复运行。在编译版本之间运行
clean
任务可以确保您能够分析完整的编译流程。// On Mac or Linux, run the Gradle wrapper using "./gradlew". gradlew clean
- 使用以下标记为您的某个产品性质(例如“dev”性质)执行调试编译版本:
gradlew --profile --offline --rerun-tasks assembleFlavorDebug
--profile
:启用分析。--offline
:禁止 Gradle 提取在线依赖项。这样可以确保因 Gradle 尝试更新依赖项而导致的任何延迟都不会干扰您的分析数据。您应该已将项目编译一次,以确保 Gradle 已经下载和缓存您的依赖项。--rerun-tasks
:强制 Gradle 重新运行所有任务并忽略任何任务优化。
-
编译完成后,使用 Project 窗口转到
project-root/build/reports/profile/
目录(如图 1 所示)。 -
右键点击
profile-timestamp.html
文件,然后依次选择 Open in Browser > Default。报告应与图 2 中显示的类似。您可以查看报告中的每个标签以了解您的编译版本,例如,Task Execution 标签显示了 Gradle 执行各个编译任务所花费的时间。