Cara Konversi build.gradle dari Groovy DSL ke Kotlin DSL / KTS Tanpa Ribet dengan GradleKotlinKonverter

Ahmad Arif Faizin
3 min readOct 27, 2023

Pada Android Studio Flamingo, kita dikenalkan dengan Kotlin DSL/ KTS sebagai jenis file yang direkomendasikan untuk build.gradle. Untuk Anda yang menemukan tutorial lama yang masih menggunakan Groovy, pasti kebingungan dong kalau mau menyesuaikan kodenya ke Kotlin DSL. Nah, di sini akan dibahas gimana cara konversi atau migrasinya supaya temen temen nggak bingung lagi.

Checkitout…

Ubah Ekstensi

Pertama yang perlu dilakukan tentu mengubah ekstensi berkasnya, dari .gradle menjadi .gradle.kts

Ada 3 file yang perlu dikonversi, yaitu:
build.gradle (module: project)
build.gradle (module: app)
settings.gradle

Ubah nama setiap file tersebut dengan cara klik kanan file → Refactor → Rename (Shift+F6).

Klik OK jika diminta untuk konfirmasi mengubah file lainnya.

Konsep Dasar Konversi

Selanjutnya, kita bisa mulai konversi. Pada dasarnya simpel kok, berikut ini contohnya.

implementation ‘androidx.core:core-ktx:1.12.0’

diubah menjadi

implementation(“androidx.core:core-ktx:1.12.0”)

Karena pada dasarnya KTS menggunakan Kotlin, maka kita bisa mengibaratkan semua kode yang ditulis layaknya function di Kotlin. Menggunakan paranthesis dan “petik dua” untuk String. Tidak ada spasi dan ‘petik satu’ lagi.

Di Groovy, untuk assigntment juga bisa tanpa menggunakan tanda sama dengan (=) seperti ini.

    defaultConfig {
applicationId "com.dicoding.picodiploma.mysharedpreference"
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

Sayangnya, untuk Kotlin itu menjadi keharusan. Jadi, kamu perlu mengubahnya seperti ini.

    defaultConfig {
applicationId = "com.dicoding.picodiploma.mysharedpreference"
minSdk = 21
targetSdk = 33
versionCode = 1
versionName = "1.0"
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}

Sampai sini, kamu mungkin sudah sadar konsepnya dan bisa mulai mirasi. Namun, tunggu dulu. Jika data yang diubah sedikit mungkin masih tidak masalah. Namun, kalau sudah banyak proses tersebut tentunya butuh waktu.

Belum lagi, kalau kodenya mulai kompleks seperti ini.

buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}

Bisakah kamu mengonversinya dengan pemahaman yang tadi? Silahkan dicoba. Oke, mari kita lihat kode yang seharusnya.

buildTypes {
named("release") {
isMinifyEnabled = false
setProguardFiles(listOf(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"))
}
}

Pattern sudah sedikit unik, kan? Tentu akan sulit untuk menghafalnya. Untuk itu, akan lebih mudah jika ada tools yang memudahkan proses ini. Penasaran? Yuk kita lanjuut!

GradleKotlinKonverter

GradleKotlinKonverter merupakan tools yang dibuat oleh mas Bernardo Ferrari yang memanfaatkan manipulasi String dan regex untuk memudahkan proses banyak kode sekaligus.

Langsung aja cuss download tools converter berikut dari GitHub

Kemudian ekstract file dari GitHub tersebut dan Buka lokasi folder tersebut pada Terminal. Anda juga bisa menggunakan Shift + Klik kanan untuk menampilkan menu Open in Terminal.

Jika sudah copy kode dari build.gradle (module: project) → Buka terminal dan panggil perintah kotlinc -script gradlekotlinconverter.kts

Jika sudah selesai, akan muncul berhasil seperti ini, dan hasil konversi sudah tersimpan di clipboard.

Langkah terakhir, tinggal paste saja di build.gradle (module: app)

8. Lakukan hal yang sama untuk build.gradle (module: app) dan settings.gradle.

Catatan:
Khusus untuk build.gradle (module: app)
Ubah dulu compileSdkVersion, minSdkVersion, dan targetSdkVersion menjadi compileSdk, minSdk, dan targetSdk

Mudah, bukan? Kini, kita bisa update banyak project yang sebelumnya masih pakai Groovy DSL ke Kotlin DSL dengan lebih cepat.

Sekilas Info:
Sebenarnya ada tools GUI juga yang dibuat mas Lukáš Kúšik
https://gradle-kotlinize.web.app/
Sayangnya masih belum berjalan lancar karena belum pakai versi GradleKotlinConverter terbaru. Sudah aku buat issuenya di sini.

https://github.com/cvb941/gradlekotlinize/issues/4

Kalau bisa bantu solve tersebut, tentu lebih bagus, biar nggak ribet buka terminal lagi. :D

Slow progress is still progress

- Unknown

--

--