提高 Android Studio 中 Gradle 执行效率
你是否感觉到Android Studio构建速度太慢?我也有这感觉。
幸运的是,这有很多可以提高构建速度的技巧。这些技巧目前还在实验并且有可能是不安全的,如果你觉得构建时间太长而且很痛苦的话,尝试一下这些技巧还是很有价值的。我已经按照下面所描述的试过在代码改动很少的情况下构建时间下降了2.5秒。希望对你有帮助。
Android Studio使用Gradle来构建工程。目前Gradle的版本为2.2。最近的版本为2.4,性能比之前的版本有很大的提升。
这有两种方式,一种是手动编辑构建文件,另一种是通过Android Studio改变配置。
对于手动编辑构建文件,在工程的根目录下的build.grade文件末尾添加以下代码:
task wrapper(type: Wrapper) { gradleVersion = '2.4' }
打开终端并运行命令:./gradlew wrapper,它将会下载并设置版本2.4的Gradle对于你本地的Gradle wrapper.这是Gradle官方文档中所描述的方法(http://gradle.org/docs/current/userguide/gradle_wrapper.html)。
对于通过Android Studio配置,打开工程结构对话框,选择工程-〉将Gradle版本改为2.4.当你点击确定,Android Studio将自动同步Gradle的配置,并设置wrapper的新版本。
笔记:这个仅仅是当你的工程用的是Gradle wrapper(默认是用Android Studio 生成的工程)。如果不是这种情况,请参考Gradle文档 http://gradle.org.
第二步就是打开工程的构建文件中的 daemon and parallel开关。使用daemon(守护进程)将会使构建启动很快,并且它不会在应用程序每次启动的时候进行完整的构建。使用Parallel将会 同时构建多个模块,在工程很大或模块很多的工程使构建速度很快。
在.gradle文件夹下添加一个文件名为gradle.properties的文件,添加如下代码(如:~/.gradle/gradle.properties)
org.gradle.daemon=true org.gradle.parallel=true
笔记:Android Studio 已经打开daemon的开关,当从终端进行构建时这个配置将确保daemon的打开。
你也可以在你的工程的根目录下添加这个文件,对于每个人构建应用它将会自动打开,包括你的集成环境(就像Jenkins CI)。当你不使用daemon构建时,从这查看更多信息http://gradle.org/docs/current/userguide/gradle_daemon.html#when_should_i_not_use_the_gradle_daemon.
关于parallel的重要的笔记:配置parallel有可能使一些工程不安全。这要求你的模块必须是解耦的(参考http://gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects) 否则有可能会构建失败。仔细测试你构建的所有variants,你会知道它的所有工作。
你可以添加其它构建参数,比如当你的工程很大时增加堆栈大小,或者指定JVM:
org.gradle.jvmargs=-Xmx768m org.gradle.java.home=/path/to/jvm
对于gradle.properties文件中其它可以配置的选项,参考http://gradle.org/docs/current/userguide/userguide_single.html#sec:gradle_configuration_properties. Android Studio中一些选项是可用的,也有是默认打开的,但在gradle.properties文件中打开这些选项时,当你使用终端构建工程时,这将会确保你的同事也做了同样的配置。
最后是改变incremental dexing的值,这是一个实验的功能并且默认是关闭的。打开这个开关有可能会导致构建失败(尤其是在连续运行的时候),但我还是推荐你尝试一下,看看它是否对你有用。
在主APP模块的build.gradle文件中,添加下面的代码:
dexOptions { incremental true }