原文鏈接
原文作者是對google 2017 IO大會關(guān)于加快Gradle構(gòu)建的一個總結(jié)。該文章對原文做了精簡,只用作資料收集
一、引用最新的Gradle插件
Android的工具團隊經(jīng)常在提升Android Gradle 插件的性能,所以這是最簡單的方式----引用最新的gradle插件。
buildscript {
repositories {
google()
}
dependencies {
classpath ‘com.android.tools.build.gradle:3.0.0-alpha3’
}
}
二、避免使用以前的MultiDex方案
為了解決android的方法數(shù)限制問題,google提供了support-multidex方法,該方法對android21以上的版本性能影響較小,但是在21以下的版本性能影響很大。如果使用了傳統(tǒng)的Multidex方案,那么最小sdk要設(shè)定在21以上,并且運行在21以上的手機上。
三、在開發(fā)時禁止使用ABI和密度拆分
如果沒有使用以上兩條,可以忽略
如果使用了,那么可以在開發(fā)構(gòu)建的時候禁止它。如果是使用命令行構(gòu)建那么需要在gradle中通過該變量來判斷。
android {
if (project.hasProperty(‘devBuild’)){
splits.abi.enable = false
splits.density.enable = false
}
}
./gradlew assembleDevelopmentDebug -PdevBuild
如果使用androidstudio構(gòu)建,那么可以在 Preferences -> Build, Execution, Deployment -> Compiler settings中設(shè)置

四、盡量使用最少的資源文件
資源文件占用了APK文件相當(dāng)多空間,將所有的資源打包進apk會降低打包的效率。在開發(fā)環(huán)境中,你可以只把你關(guān)注的資源打包進apk。
productFlavors {
development {
minSdkVersion 21
//only package english translations, and xxhdpi resources
resConfigs (“en”, “xxhdpi”)
}
}
五、禁止使用PNG的優(yōu)化
PNG的優(yōu)化默認是開啟的,在打包開發(fā)版的時候可以關(guān)閉它。
android {
if (project.hasProperty(‘devBuild’)){
aaptOptions.cruncherEnabled = false
}
}
六、使用Instant Run
在設(shè)置里面開啟就行
七、避免沒有意義的改變
gradle在構(gòu)建上真的是很靈活,你可以通過修改構(gòu)建的腳本做許多很酷的事情,但是如果你不小心改變了它的某個參數(shù),那么構(gòu)建將十分緩慢。下面的代碼片段是修改版本號,這意味著即使是debug版時也將會修改版本號,這是沒有必要的。
//this is BAD!
def buildDateTime = new Date().format(‘yyMMddHHmm’).toInteger()
android {
defaultConfig {
versionCode buildDateTime
}
}
修改后:
def buildDateTime = project.hasProperty(‘devBuild’) ? 100 : new Date().format(‘yyMMddHHmm’).toInteger()
android {
defaultConfig {
versionCode buildDateTime
}
}
還可以通過標(biāo)志位的方式,在debug的時候不觸發(fā)一些代碼
android {
buildTypes {
debug {
ext.alwaysUpdateBuildId = false
}
}
}
八、不要使用動態(tài)版本庫依賴
如果使用了動態(tài)版本的依賴,那么gradle將不定時的去檢查最新的版本。這樣是很耗時。
九、注意分配給gradle的內(nèi)存
設(shè)定你想要分配給gradle的內(nèi)存
org.gradle.jvmargs=-Xmx1536m
自從Dex In Process發(fā)布以來,不需要這種優(yōu)化了
dexOptions {
javaMaxHeapSize = ‘4g’
}
十、使用gradle的緩存
gradle在3.5以后加入了緩存的功能,允許緩存以后每次構(gòu)建將使用上一次構(gòu)建的輸出,在androidstudio3.0對這個功能有很好的支持,只需要配置:
# Set this in gradle.properties
org.gradle.caching=true
單詞
Packing all resources 打包所有的資源
Disable the mutildex 禁用..
optimizations 優(yōu)化
Gradle is super flexible gradle十分靈活
if you aren’t careful 如果你不小心
This little snippet of code 代碼片段
....takes even more advantage of .. 優(yōu)勢