Skip to content

opoojkk/BuildScope

Repository files navigation

BuildScope

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。

About

一个输出可视化 Gradle 执行耗时的 Gradle 插件

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages