BuildScope 是一个 Gradle 插件,用来回答一个问题:这次构建慢,主要慢在哪。
它会在构建过程中采集配置阶段和各个 Task 的执行耗时,构建结束后生成一份 JSON 和一份单文件 HTML 报告。你打开 HTML 就能看到总耗时、配置期与执行期的占比,以及最慢的若干 Task,并可以按模块过滤,方便定位瓶颈。
- 面向场景:Android / Gradle 工程在本地或 CI 上构建变慢时,需要快速看到「谁在拖时间」。
- 不做的事:不做代码级性能分析,不替代 Profiler;只做构建维度的耗时统计与可视化。
- 输出:一次构建产生
build-metrics.json(便于 CI 或脚本对比)和build-report.html(直接打开查看)。数据在内存中累积,只在构建结束时写文件,不在 Task 执行过程中做额外 IO。不需要时可以随时用配置关掉采集。
仓库里带了一个 Android 示例应用,可以直接跑一次构建并生成报告:
# 需要先配置 Android SDK:设置 ANDROID_HOME,或在项目根目录建 local.properties:
# sdk.dir=/path/to/your/Android/sdk
./gradlew :sample-app:assembleDebug构建成功后,报告在根项目下的 build/buildscope/build-report.html。注意任务名是 :sample-app:assembleDebug,在根项目下单独跑 assembleDebug 会报 Task 不存在,因为根项目不是 Android 工程。
先发布到本地 Maven:
./gradlew :buildscope-plugin:publishToMavenLocal在要分析的工程里,settings.gradle.kts(或 settings.gradle)里加上本地仓库,以便解析插件:
pluginManagement {
repositories {
mavenLocal()
gradlePluginPortal()
google()
}
}在根 build.gradle.kts 里应用插件并可选配置:
plugins {
id("io.buildscope.plugin") version "0.1.0"
}
buildScope {
enabled.set(true)
outputDir.set("buildscope") // 报告输出到 rootProject.buildDir/buildscope/
androidTasksOnly.set(false) // true 时只统计 Android 相关 task
}然后照常执行构建,例如:
./gradlew assembleDebug
# 或 clean build 等任意任务构建结束后会生成:
build/buildscope/build-metrics.json— 机器可读,方便做 CI 或历史对比build/buildscope/build-report.html— 本地双击打开即可查看
控制台会打印报告路径:BuildScope: 报告已生成 -> .../build-report.html。不需要分析时,设置 buildScope { enabled.set(false) } 即可关闭采集。
使用中遇到问题欢迎提 Issue,有改进想法或修复也欢迎提交 PR。