在 Gradle 5.0 之後就可以開始支援在 *.gradle 檔案裡面使用 Kotlin DSL,這篇文章將會講解如何把 Android 專案的 Gradle build script 轉換為使用 Kotlin DSL,讓你可以直接無痛使用 Kotlin 撰寫 *.gradle,而捨棄(超難用)的 Groovy 語法。
更新
很多人私訊問我能不能提供完整的範例程式碼,我準備好開放出來了,可以前往 https://github.com/enginebai/AndroidBase 觀看和 Clone,歡迎給星 ⭐!
為何要做這轉換呢?個人覺得有兩個非常重要的好處:…(未完)
完整文章已轉移至 Medium,這邊不再更新會陸續轉移過去,未來在 Medium 繼續寫新文章,文章歡迎「拍手」按讚以及 Follow。
https://medium.com/enginebai/gradle-kotlin-dsl-a18561404876
完整程式碼 ,歡迎給星 ⭐ https://github.com/enginebai/AndroidBase
build.gradle.kts 內的 dependencies block – +相反了~
感謝提醒,已經修正了
請問有完整的程式碼嗎?
有,已經更新附在文章中了。
轉換 settings.gradle 且重新命名成 build.gradle.kts
應該是 settings.gradle.kts
感謝分享~
已經修正囉,謝謝提醒了,另外我好像有看到你有問 https://github.com/enginebai/AndroidBase/blob/7f21bb4c6d2321f6afa6e63223775abdc8f9e622/buildSrc/src/main/kotlin/Dependencies.kt#L80 為何 implementation 不一開始就使用,這個其實兩種寫法都可以,所以我特別留下來的,我個人偏好第二種,但是第二種居然要宣告 `val implementation by configurations` 讓我覺得不俐落。
“轉換 settings.gradle 且重新命名成 build.gradle.kts:”
這邊應該是 setting.gradle.kts
想請問這邊為什麼要先用 “implementation”,之後再用 val implementation by configurations,不一開始就用,謝謝
https://github.com/enginebai/AndroidBase/blob/7f21bb4c6d2321f6afa6e63223775abdc8f9e622/buildSrc/src/main/kotlin/Dependencies.kt#L80
這種方式 android studio 應該就不會幫你檢查 dependencies 用的版本有沒有更新了吼 XD
目前實測是這樣沒錯,有利有弊,但我個人覺得轉換成這樣 Z > B,或許可以寫一個 plugin 來針對 Gradle Kotlin DSL 做版本更新判斷。