提高 Gradle 速度的方法
本文参考自 How I save 5h/week on Gradle builds,由于在项目中经常碰到 Gradle build 很久的情况,所以这里把 Gradle 能优化的地方列了出来,请对照修改。
Gradle Daemon
为 Gradle 使用守护进程来构建项目,可以减少 Gradle 的启动时间。
org.gradle.daemon=true
Parallel Project Execution
如果你的项目有多个子 module 的依赖,设置并行执行这一项会让项目运行时间显著提升。
org.gradle.parallel=true
Configure projects on demand
Gradle 在执行之前,不管 项目是否需要构建,都会执行构建每一个项目的任务。
「Configuration on demand」这种模式 改变了这个行为,只会为需要的项目进行构建。和并行模式一样,按需配置对于多模块依赖的项目构建有显著的影响。
Global gradle.properties
Mac Os 的全局设置的位置
/Users/「username」/.gradle/gradle.properties (若没有这个文件,请先创建)。
配置内容如下:
1 | # The Gradle daemon aims to improve the startup and execution time of Gradle. |
使用 profile tool 来收集报告
如果想要找出哪部分构建时间过长,可以通过收集构建的信息来分析。具体的方法是:在 Gradle 的任务栈中添加「–profile」标记,如下图:
添加成功后,在 build 后会在根目录的 「build/reports/profile」目录下看到一个 html 文件,像下面这样:
根据这个报告,可以一步一步优化 build 的时间。
比如:每次 Gradle 时,不再去进行 lint 检查,需要在根目录的 build.gradle 里面添加下面这句:
1 | tasks.whenTaskAdded { task -> |
总结
- 使用全局的 gradle.properties,让每个项目内置这样的配置
- 使用 gradle 构建时,收集 profile
- 根据 profile 选择基本的模块依赖
- 跳过不必要的 gradle task