前言
本篇gradle構(gòu)建腳本的編寫是按照android項目中build.gradle的常用的點來進(jìn)行梳理的榛泛。
可以通過DSL Reference文檔查看Gradle DSL支持的語法配置項抽诉,下面是一些配置文檔:
Gradle DSL Reference(Gradle原生支持的DSL配置)
https://docs.gradle.org/current/dsl/Android Plugin DSL Reference(Android的DSL配置)
http://google.github.io/android-gradle-dsl/current/
andorid里面經(jīng)常需要做的一些配置在上面這個地址下就可以看到所有的項竞穷。
Gradle 構(gòu)建語言
Gradle 提供一種領(lǐng)域特定語言或者說是 DSL淘钟,來描述構(gòu)建。這種構(gòu)建語言基于 Groovy 中涛贯,并進(jìn)行了一些補充厕氨,使其易于描述構(gòu)建。
(1)ext篷就,額外屬性
Gradle 的域模型中射亏,所有增強的對象都可以容納用戶定義的額外的屬性。這包括但并不限于項目(project)竭业、任務(wù)(task)和源碼集(source set)智润。額外的屬性可以通過所屬對象的 ext 屬性進(jìn)行添加,讀取和設(shè)置永品∽鲇ィ或者,可以使用 ext 塊同時添加多個屬性鼎姐。
例子1. 使用額外屬性
apply plugin: "java"
ext {
springVersion = "3.1.0.RELEASE"
emailNotification = "build@master.org"
}
sourceSets.all { ext.purpose = null }
sourceSets {
main {
purpose = "production"
}
test {
purpose = "test"
}
plugin {
purpose = "production"
}
}
task printProperties << {
println springVersion
println emailNotification
sourceSets.matching { it.purpose == "production" }.each { println it.name }
}
gradle -q printProperties的輸出結(jié)果
3.1.0.RELEASE
build@master.org
main
plugin
在此示例中钾麸, 一個 ext 代碼塊將兩個額外屬性添加到 project 對象中。此外炕桨,通過將ext.purpose 設(shè)置為 null(null是一個允許的值)饭尝,一個名為 purpose 的屬性被添加到每個源碼集(source set)。一旦屬性被添加献宫,他們就可以像預(yù)定的屬性一樣被讀取和設(shè)置钥平。
額外屬性在任何能夠訪問它們所屬的對象的地方都可以被訪問,這使它們有著比局部變量更廣泛的作用域姊途。父項目上的額外屬性涉瘾,在子項目中也可以訪問。根據(jù)這個來看第二個例子
例子2 android studio項目中各個build.gradle中的配置:
project中的build.gradle:
ext {
VERSION_COMPILE_SDK = 27
VERSION_BUILD_TOOLS = '26.0.2'
VERSION_MIN_SDK = 15
VERSION_TARGET_SDK = 25
SOURCE_COMPATIBILITY = JavaVersion.VERSION_1_7
}
project下多個子項目中build.gradle:
defaultConfig {
applicationId "com.didi.virtualapk"
minSdkVersion VERSION_MIN_SDK
targetSdkVersion VERSION_TARGET_SDK
versionCode 3
versionName "1.0.0"
}
compileOptions {
sourceCompatibility SOURCE_COMPATIBILITY
}
通過上面這個例子中捷兰,我怎么感覺這就是在公共部分中(或者父類)設(shè)置了一些變量立叛,在子項目(或者子類)中直接使用
無意中發(fā)現(xiàn)這個博客,寫的很全面贡茅,既然有了秘蛇,那就到此為止吧其做,有需要可以看這里Android Gradle配置快速入門