
說明
在Android應用開發(fā)中,離不開Gradle腳本的構建,它的重要性不言而喻,它是使用一種基于Groovy的特定領域語言(DSL)來聲明項目設置,拋棄了基于XML的各種繁瑣配置。很多人可能知道Gradle腳本使用Groovy語言來編寫,但是可能并不會Groovy語言,只是記住固定的配置,比如:我們要依賴三方庫,只需要這樣配置即可:implementation 'androidx.appcompat:appcompat:1.0.2'。
不懂Groovy語言不影響正常的使用,但是有時候我們想通過Gradle腳本來實現(xiàn)一些特殊的功能,比如:打包后自動上傳到蒲公英,方便測試團隊測試,以及使用Gradle來記錄每個版本的更新信息并上傳到服務器等等,這時候需要我們自己來實現(xiàn)了,這就需要我們了解Groovy語言。當然因為Groovy語言它是對Java代碼進行了擴展,我們完全可以使用Java代碼來編寫,但是語法就顯得有些啰嗦。而學習Groovy語言是需要一定成本的,并且在Android Studio是沒有語法提示的。
Kotlin Meets Gradle
Gradle團隊為Gradle開發(fā)了一種新的基于Kotlin的構建語言,稱之為Gradle Script Kotlin,從Gradle 3.0開始支持。也就是說我們可以使用Kotlin來編寫Gradle腳本了,當使用Kotlin來編寫Gradle腳本的時候一切都變得美好了:
- 腳本代碼可以自動補全了
- 源碼之間可以互相跳轉了
- 插件源碼更容易看懂了
- 支持重構了
使用Kotlin編寫Gradle
下面我們就用kotlin來改造項目中的Gradle腳本。Gradle Script Kotlin腳本以.gradle.kts后綴結尾。所以,我們需要將工程根目錄gradle文件更名.gradle.kts。
1.更改settings.gradle
將工程根目錄settings.gradle更名為settings.gradle.kts。

更改后文件報錯了,我們需要改成Kotlin語法,這里就是一個方法調用。修改后如下所示:

可以看到,參數(shù)含義自動提示了。
2.更改根目錄下的build.gradle
同理,先修改擴展名,再改成Kotlin語法,修改后的文件如下所示:

由于我們修改了build.gradle的文件名,為了保證工程可以使用這個腳本,需要在settings.gradle.kts中添加一行代碼,讓Gradle知道使用build.gradle.kts腳本構建。
include(":app")
rootProject.buildFileName = "build.gradle.kts"
3.修改app模塊中的build.gradle
操作跟上面的步驟一樣,修改后的文件內容如下所示:

從上面的示例中我們可以看到修改成gradle.kts后,語法有了提示,并且點擊可以直接跳轉到源碼。并且更加容易理解每一步的配置。

使用Gradle Script Kotlin后,我們可以用Kotlin來開發(fā)插件或者編寫腳本,如果開發(fā)插件,可以改成下面的寫法了:
class MyPlugin : Plugin<Project> {
override fun apply(project: Project) {
project.run {
tasks {
register("myCopyTask", Copy::class) {
group = "sample"
from("build.gradle.kts")
into("build/copy")
}
}
}
}
}
有沒有感覺很親切。更多示例請查看官方Demo。