加速gradle构建

2018-05-23  本文已影响17人  禅与发现的乐趣

开启Daemon

Gradle Daemon是一个长期生存(3小时不被调用就会自动结束)能够提升编译速度的后台进程。它的优化原理如下:

# 为了保证每次编译的独立性,在持续集成中,不建议开启daemon
org.gradle.daemon=true

Configuration on demand

gradle编译的三个阶段:

org.gradle.configureondemand=true

设置内存大小

根据自身设备进行配置:

org.gradle.jvmargs=-Xmx5120m -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

为gradle分配最大5G内存。

debug构建关闭proguard

proguard除了代码混淆外,还可以进行代码压缩,优化和验证,代码优化会占用很多的时间,比如一个开启了代码优化的配置如下:

-optimizationpasses 5

这就意味着代码优化会经过5次,即上一次的优化输出结果作为下一次优化的输出。
可以在gradle配置debug编译方式时禁用proguard。

buildTypes {
        release {
            buildConfigField("boolean", "DEBUGABLE", "false")
            buildConfigField("int", "SERVER_TYPE", "${rootProject.ext.serverEnvCode}")
            minifyEnabled true
            zipAlignEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
        debug {
            buildConfigField("boolean", "DEBUGABLE", "true")
            buildConfigField("int", "SERVER_TYPE", "${rootProject.ext.serverEnvCode}")
            versionNameSuffix "-debug"
            minifyEnabled false
            zipAlignEnabled true
            shrinkResources false
//            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.release
        }
    }

直接点选运行按钮可以选择编译方式,具体参考-----

模块化项目和并行编译

并行执行在多项目编译的项目中能有效提升编译的速度,但是并行的前提是每个项目已经被模块化,每个项目之间没有耦合,这个功能目前还在孵化中。。。
开启parallel

# 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

开启offline

开启offline后,可以强制gradle使用本地缓存的依赖,避免了网络读写操作和网络检查依赖。
如果某个依赖不存在的时候,编译会出错,这样只需要暂时关闭offline,等依赖下载下来后,再打开就可以了。


gradle-1.png
上一篇下一篇

猜你喜欢

热点阅读