为你的Android项目加速Gradle构建

###为你的Android项目加速Gradle构建html

有没有感受你成天什么都没干只是在电脑面前等待编译结果?只是我是这样。java

幸运的是,有许多中方法去提高编译速度。其中某些还只是实验性功能而且不是很稳定,但鉴于编译时间太长的痛苦,仍是很值得一试。再使用下面的方式以后,项目有些小改动的编译速度已经降低到2.5秒!但愿对你也能有一样的效果。android

Android使用Gradle编译,默认的版本是2.2。而最新的Gradle版本已经到了2.4,在性能方面有了具体的提高。app

有两种方法能够在Android项目中使用2.4版本。一种是修改你的build脚本,另外一种是在Android Studio中配置。jvm

编辑你的build脚本,在根build.gradle最后添加ide

task wrapper(type: Wrapper) {
	gradleVersion = '2.4'
}

而后打开terminal运行*./gradlew*命令,gradlew会自动下载并为本地Gradle Wrapper配置2.4版本的Gradle。这种方法是官方教程模块化

在AS里面配置,打开Project Structure选项,选择左边的project,而后在右边把Gradle版本改成2.4,点击完成。AS会自动同步Gradle设置而且引用到wrapper上。 AS配置性能

不过请注意,这种方式只能用在使用Gradle wrapper方式的工程。AS自动帮你生成的就是这样方式。若是不是这种状况,请去Gradle网站查找官方文档。测试

下一步要作的就是开启Gradle Daemon和并行构建。使用daemon可以提高构建启动速度,由于它不须要每次都启动整个Gradle应用。并行构建可以让你工程中多个module同时编译,这有利于大的模块化的工程构建速度。gradle

在home目录中.gradle文件夹下添加一个名为gradle.properties文件就能开启这些设置。

org.gradle.daemon=true
org.gradle.parallel=true

其实Android Studio已经自动开启了daemon,可是经过这样设置,在命令行下编译也能享受到一样的好处。

你还能够把这个文件添加到你工程的目录下,就能让别人在编译这个app时候获得一样的好处,甚至是在你的持续集成环境中。不过有时候你也不该该老是启用daemon,请看这里

**并行构建请注意:**并行构建可能会在某些工程上表现的不稳定,它须要你项目中全部module必须是解耦的,不然颇有可能你编译失败。请仔细测试你构建以保证他们可以正常工做。

你还能够为Gradle添加额外的参数,好比为你的大工程增长堆大小上限,指定JVM路径:

org.gradle.jvmargs=-Xmx768m
org.gradle.java.home=/path/to/jvm

gradle.properties中你还能够作不少其余的事情,详情请看这里。其中有些是对Android Studio能够的而且已经默认使用了,把它们放到gradle.properties文件可使在命令行编译也能有一样的好处,或者让你同事也能使用相同的设置。

最后要作的就是加强dex步骤,这只是一个实验性功能,如今是默认没有开启的。开启这个功能可能会致使你编译失败(尤为是在连续运行的时候),可是我仍是强烈建议你尝试一下,看看它对你有没有用。

在你主app module下build.gradle文件中android部分加上下面的代码开启它:

dexOptions {
    incremental true
}

但愿这些可以帮助到你。若是你有任何问题或者其余关于提高编译性能的建议,欢迎留下评论一块儿探讨。

####参考资料 https://medium.com/@erikhellman/boosting-the-performance-for-gradle-in-your-android-projects-6d5f9e4580b6 http://gradle.org/

相关文章
相关标签/搜索