直接用 ./gradlew --profile 生成本地 HTML 性能报告,路径如 file:///path/to/project/build/reports/profile/profile-*.html,含 Summary、Task Execution 和 Configuration 三大关键看板,纯离线无隐私风险。

直接用 ./gradlew --profile 就能生成本地 HTML 性能报告,无需插件、不依赖网络,所有数据都在你本地磁盘。
执行 --profile 命令后报告在哪
运行完命令,终端会输出类似这样的路径:
See the profiling report at: file:///path/to/your/project/build/reports/profile/profile-2026-10-19-16-29-45.html
这个文件就是完整的构建耗时分析页。注意几点:
- 路径里的
profile-*.html文件只在成功构建后生成,失败时不会写入 - 每次运行都会生成新文件,旧报告不会被覆盖,但也不会自动清理
- 报告里“Task Execution”时间可能比实际终端耗时略高——因为
--profile会额外注入计时钩子,包含极短的 JVM 调度开销
--profile 报告里最关键的三个看板
打开 HTML 后别从头翻,盯住这三个区域:
- Summary:看 “Total Build Time” 和 “Task Execution” 是否严重偏离(比如后者比前者还大,说明配置阶段有大量阻塞逻辑)
-
Task Execution:按耗时倒序排列,重点关注标红的 top 5 任务,例如
:app:compileDebugJavaWithJavac或:app:mergeDebugResources -
Configuration:如果 “Configuring Projects” 占比超过 20%,大概率是
build.gradle里写了耗时操作(比如读文件、调远程 API、解析大 JSON)
为什么不用 --scan 替代 --profile
--scan 会把全部构建数据发到 Gradle 官方服务器,生成在线链接;而 --profile 是纯离线、无上传、零隐私风险的本地方案。区别很实在:
- 想快速验证某次改动是否拖慢构建?用
--profile,3 秒出报告 - 需要跨团队共享、做长期趋势对比、或查依赖冲突?才上
--scan - CI 环境默认禁用
--scan(涉及敏感信息),但--profile可以自由存档为 artifact
真正容易被忽略的是:报告里的时间粒度只到任务级,看不到某个 kapt 注解处理器内部到底卡在哪一行。这时候就得配合 gradle-profiler 或 Android Studio 的 Build Analyzer 才能继续下钻——--profile 是起点,不是终点。



















