使用 Build Analyzer 检查项目的构建性能。对于您执行的每个构建,Build Analyzer 都会尝试呈现最重要的信息,以便您可以快速识别并解决构建性能中的回归问题。
有关改进构建性能的其他策略,请阅读优化构建速度。
开始使用
每次构建应用时,Build Analyzer 都会创建一个报告,并在构建窗口中显示最新报告的数据。
如需开始使用,请按以下步骤操作:
- 如果您尚未构建应用,请通过以下方式之一进行构建:
- 从菜单栏中依次点击构建 > 构建项目。
- 如需构建 Android App Bundle 或 APK,请从菜单栏中依次点击构建 > 构建 Bundle(s) / APK(s) > 构建 Bundle(s) 或 构建 > 构建 Bundle(s) / APK(s) > 构建 APK(s)。
- 如需打开构建窗口,请从菜单栏中依次选择视图 > 工具窗口 > 构建。
- 如需在 Build Analyzer 中查看构建报告,请点击构建窗口中的 Build Analyzer 标签页。
Build Analyzer 显示的数据可能会因构建而异,因此最好多次构建项目并比较数据以识别模式。
查看确定构建持续时间的插件
在完成构建后首次打开 Build Analyzer 时,窗口会显示构建分析概览,如图 1 所示。

如需查看确定构建持续时间的插件明细,请在概览页面上点击对构建持续时间有影响的插件。您也可以从下拉菜单中选择任务并确认您正在按插件分组。图表根据插件及其相关任务完成所需的总时间对它们进行排序。

查看确定构建持续时间的任务
如需查看有助于构建持续时间的任务明细,请在概览页面上点击对构建持续时间有影响的任务或从下拉菜单中选择任务。如果您的项目使用 AGP 8.0 或更高版本,任务默认按类别分组,因此更容易识别影响构建持续时间的区域。点击每个子任务可详细了解其执行情况。

检查警告
如果 Build Analyzer 检测到某些任务可以配置为更高效地运行,它会提供警告。如需查看 Build Analyzer 为您的构建识别的所有警告,请在概览页面上点击所有警告或从下拉菜单中选择警告。
一些警告带有生成报告链接,如图 4 所示。当您点击生成报告链接时,会弹出一个对话框,其中包含可能有助于插件开发者在插件新版本中解决问题的其他信息。点击复制可将文本保存到剪贴板,以便更轻松地将信息粘贴到给插件开发者的错误报告中。

警告类型
Build Analyzer 报告以下警告类型:
始终运行的任务:始终运行的任务会导致其他任务在每次构建时都运行,这是不必要的。您看到此警告主要有两个原因:
(更常见)您未正确声明任务输入和输出。如果是这种情况,您应该正确声明任务的输入和输出。这意味着在可能的情况下自行声明输入和输出,或者如果触发警告的任务来自第三方插件,则更改插件版本。
(不常见)任务的
upToDateWhen
设置为 false,应避免这种情况。可能是某些逻辑评估为 false,或者upToDateWhen
硬编码为 false。如果逻辑评估为 false,此结果可能是故意的,您可以选择忽略此警告。如果upToDateWhen
硬编码为 false,您应该从代码中移除硬编码。
任务设置问题:此警告是为声明相同目录作为输出的任务生成的。这意味着这些任务的输出很可能在构建之间没有被保留,并且这些任务总是运行,即使没有更改。要解决此警告,您应该为您的任务声明不同的输出目录。这意味着在可能的情况下自行声明不同的输出目录,或者如果触发警告的任务来自第三方插件,则更改插件版本。
非增量式注解处理器:当注解处理器是非增量式并导致
JavaCompile
任务始终以非增量方式运行时,会生成此警告。要解决此警告,请切换到增量式注解处理器。配置缓存:如果您的项目未启用配置缓存,则会显示此警告。Build Analyzer 会通过一系列构建来检查您的项目是否与配置缓存兼容。如果兼容性检查成功,您可以从 Build Analyzer 启用配置缓存。
检查 Jetifier:如果您的项目中存在并启用了
enableJetifier
标志,即在您的gradle.properties
文件中包含android.enableJetifier=true
,则会显示此警告。Build Analyzer 可以执行检查以确定是否可以安全地移除该标志,从而使您的项目具有更好的构建性能并从不再维护的 Android 支持库迁移。
检查下载影响
Build Analyzer 提供了下载依赖项所用时间的摘要以及每个仓库下载的详细视图。如需检查下载的影响,请从下拉菜单中选择下载。此信息也可在同步窗口中找到。
您可以使用此信息来确定意外的依赖项下载是否对您的构建性能产生了负面影响。这在增量构建期间尤为重要,增量构建不应持续下载工件。
具体来说,您可以使用此信息来识别配置问题,例如使用导致意外下载的动态版本依赖项。此外,如果您发现某个特定仓库的请求失败数量很高,这可能表明该仓库应被移除或在您的仓库配置中下移。

[仅限 Windows] 检查杀毒软件的影响
如果杀毒软件可能影响您的构建性能,Build Analyzer 会通知您。当 Windows Defender 等杀毒软件对 Gradle 使用的目录进行实时扫描时,可能会发生这种情况。Build Analyzer 建议了一系列要从主动扫描中排除的目录,并且如果可能,它会提供一个链接,将其添加到 Windows Defender 文件夹排除列表中。