Gradle是Android项目新的编译系统,是基于JVM的进化版的编译工具;它从构建工具(如Ant 和Maven)汲取了经验教训。随着Android项目变得越来越复杂,模块化的开发实践变得越来越流行,编译性能至关重要。在每次编译时节省几秒能大大提高效率。
你可能已经意识到,即使最简单的Gradle 可以说相当慢,这里有一些提示,以提高gradle 任务的执行性能:
Gradle守护进程
你可以减少Gradle的启动时间,如果你告诉Gradle使用守护进程来编译:org.gradle.daemon=true
并行执行工程
如果你正在建立一个非常复杂的项目,并且有很多依赖的子模块,这会带来很大的不同:org.gradle.parallel=true
按需配置项目
执行任务之前Gradle会配置每个项目,不管实际上该项目是否需要特定的编译。“按需配置”模式更改此行为,只配置所需的项目。像并行模式,按需配置会有很大影响对于多模块依赖的构建。全局的gradle.properties
在我们的主目录中的属性文件中定义的属性优先于项目目录,因为你想在构建服务器上避免使用守护,在内存耗用比启动时间更重要的地方。
/Users/用户/.gradle/gradle.properties
# The Gradle daemon aims to improve the startup and execution time of Gradle.
# When set to true the Gradle daemon is to run the build.
org.gradle.daemon=true
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx10248m -XX:MaxPermSize=256m
org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
# 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
- Modules 消耗很高
如果该模块不经常修改,重要的是要考虑到这一点:从头开始编译需要时间,甚至检查以前的单个模块构建是否是最新的。依赖.jar/.aar效率更高。
优化 lint 任务执行时间
gradle build -x lint
更进一步
gradle build -x lint -x lintVitalRelease
提示 :如果你想从增量构建永久地跳过lint检查,在build.gradle添加:
tasks.whenTaskAdded { task ->
if (task.name.equals("lint")) {
task.enabled = false
}
}
原文:
https://android.jlelse.eu/speeding-up-gradle-builds-619c442113cb#.fwotrutph