Gradle编译优化--让你的打包速度快一倍

前言

最近项目打包50个左右,居然要50分钟,这简直是太慢了,所以抽个空优化一下吧。顺便把结果分享给大家。先说结果,开始打包时间将近50分钟。优化后需要24分钟。

过程

要想优化,我们必须先知道优化哪里。有一个命令可以帮助我们

1
2
3
gradlew --profile
或者
gradle --profile

这两个的区别我就不解释了,不清楚的话自己google。

执行完这个命令之后,我们去’\build\reports\profile’路径,找到我们的profile-2017-xx-xx-xx-xx-xx.html文件。

二话不说先上图,图一图二是优化前的耗时,图三图四是优化后的耗时。

下面就把我优化的过程分享下吧。

耗时的任务

我们看上图Summary,Configuration,Dependency Resolution,Task Execition,
我们看Task Excition,这里面有我们在编译期间每一次进行的耗时。
笔者在此就不发自己的了,因为还要打码。

No.1

首先在你项目的根目录调整你的gradle.properties文件
我在文件内加入了如下两行

1
org.gradle.jvmargs=-Xms2048m -Xmx4096m

这两行其实就是设置你的jvm虚拟机内存,因人而异,看你机器配置。

No.2

同样是gradle.properties文件内,加入如下两行

1
2
3
4
5
6
7
8
9
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
org.gradle.parallel=true
# Enables new incubating mode that makes Gradle selective when configuring projects.
# Only relevant projects are configured which results in faster builds for large multi-projects.
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:configuration_on_demand
org.gradle.configureondemand=true

这两句官方给出的解释已经很详细,大概意思就是第一句是只能与解耦项目一起使用。
第二句是配置这句,会为大型项目加快build

No.3

找到你的项目下的build.gradle,加入如下语句

1
2
3
4
5
android {
aaptOptions {
cruncherEnabled false
}
}

不检查png的合法性,这个大家可以根据自己的项目来判断是否开启。

结尾

我目前就改了这几处,可以将gradle提速一倍,希望能帮助到大家