Gradle编译加速

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

猜你喜欢

转载自blog.csdn.net/zhouxinxin250/article/details/62481998