SuperAPI AI 工具集

gradle-build-performance

编程与开发

查看项目

更新于 10-15 23:57

技能介绍

用途:当 Android/Gradle 构建变慢时,系统性地诊断瓶颈并逐项优化,而不是盲目调整参数。

工作流:先测量基线(clean 与增量构建),再运行 ./gradlew assembleDebug --scan(或用 --profile 生成不上传的报告),在 Build Scan 时间线中定位慢的阶段(配置/执行/依赖解析),每次只应用一项优化并重新测量。批量改动会导致无法判断哪项有效。

配置阶段优化:启用配置缓存(org.gradle.configuration-cache=true,AGP 8+),先设 org.gradle.configuration-cache.problems=warn,确认干净后再改为 fail。配置阶段避免 I/O,例如 file("version.txt").readText()、网络调用或 exec {} 会破坏配置缓存,应延迟到执行阶段,改用 providers.fileContents(layout.projectDirectory.file("version.txt")).asText。任务使用懒注册 tasks.register 而非急切的 tasks.create。用约定插件替代 subprojects {} / allprojects {}。

kapt 迁移 KSP:KSP 约比 kapt 快 2 倍,AGP 9 起迁移为强制要求,需 KSP 2.3.1+,Hilt/Room/Moshi 均支持;无 KSP 等价物的注解处理器可回退到 com.android.legacy-kapt。

依赖解析:固定版本,避免 1.0.+ 或 -SNAPSHOT 导致每次构建联网检查;仓库按声明顺序检查,最常用的放前面(google() 再 mavenCentral(),第三方最后)。

gradle.properties 基线:org.gradle.configuration-cache=true、org.gradle.caching=true、org.gradle.parallel=true、org.gradle.jvmargs=-Xmx4g -XX:+UseParallelGC、android.nonTransitiveRClass=true。

限制:资料未提供具体收益数值、适用版本范围之外的兼容性细节及失败回退步骤。