Gradle增量编译需版本对齐、声明明确、写法合规三者到位:Java自4.10+默认支持,Kotlin需插件≥1.3.30且显式设incremental=true,Android需AGP≥3.3.0;须避免破坏输入输出建模的写法,并配合构建缓存、守护进程等机制。

Gradle 增量编译不是“开关一开就自动飞快”的功能,而是依赖正确配置、规范写法和版本支持的协同机制。只要改一行代码就能秒级编译,关键在于让 Gradle 准确识别“哪些变了、哪些没变、哪些该重跑”。
确认基础支持与版本前提
增量编译在现代 Gradle 中默认启用,但效果取决于版本和语言插件:
- Java 编译任务(
JavaCompile)从 Gradle 4.10+ 开始默认支持增量编译,无需额外配置 - Kotlin 编译(
KotlinCompile)需 Kotlin 插件 ≥ 1.3.30 + Gradle ≥ 5.4,且建议用 Kotlin DSL 的incremental = true显式声明 - Android 项目需 Android Gradle Plugin ≥ 3.3.0(对应 Gradle ≥ 4.10),并确保
android.enableIncrementalJavaCompilation=true(AGP 4.1+ 已移除此配置,由插件自动管理)
显式启用与精细化控制
对 Kotlin 或自定义任务,推荐主动声明以避免隐式失效:
- 在模块级
build.gradle.kts中为 Kotlin 编译任务设置:
- 若使用 Java,可加 JVM 参数增强稳定性(非必需但推荐):
避免破坏增量判断的常见写法
增量机制依赖“输入-输出”精准建模,以下操作会直接导致任务退化为全量执行:
- 在自定义 Task 中使用
File或FileTree直接遍历文件,而非FileCollection声明输入 - 任务中调用
project.fileTree(...).files动态获取文件列表(破坏输入快照追踪) - 未正确定义
@InputFiles、@OutputDirectory等注解(自定义 Task 必须标注) - 构建脚本中频繁修改
sourceSets结构(如运行时追加源码目录)
配合构建缓存与守护进程放大效果
增量编译不是孤立优化,需与其它机制协同生效:
- 在
gradle.properties中启用构建缓存:org.gradle.caching=true - 开启守护进程减少启动开销:
org.gradle.daemon=true - 并行构建加速多模块响应:
org.gradle.parallel=true - Gradle 9.x 用户强烈建议开启配置缓存:
org.gradle.configuration-cache=true(可跳过重复解析,进一步压缩首次增量构建延迟)
不复杂但容易忽略——真正起效的增量编译,靠的是版本对齐、声明明确、写法合规这三件事同时到位。











