Kotlin Cover - Inpows
Kotlin Android

Migrasi ke Gradle Kotlin DSL

Migrasi ke Gradle Kotlin DSL – Pada artikel kali ini, kita akan membahas bagaimana melakukan migrasi ke Gradle Kotlin DSL. Seperti yang kita tahu, Gradle adalah salah satu file penting yang hadir dalam pengembangan projek aplikasi Android. Kita menggunakan file build.gradle untuk mengatur seluruh dependencies yang dibutuhkan untuk aplikasi yang dibuat. Akan tetapi, semua kode file yang digunakan Gradle ditulis dalam bahasa pemrograman Groovy. Dengan hadirnya Kotlin dalam pengembangan aplikasi Android yang memiliki kelebihan dalam hal concise code, interoperable, dan null-safety. Jadi, kenapa kita tidak menggunakan Kotlin juga untuk mengatur dependencies dalam pengembangan aplikasi Android.

Dalam pengembangan aplikasi Android saat ini, jika kalian menggunakan Android Studio file Gradle yang dibuat akan menggunakan bahasa pemrograman Groovy. Simak artikel ini lebih lanjut untuk memahami bagaimana proses migrasi ke Gradle Kotlin DSL.

Mengenal Gradle Kotlin DSL

Migrasi Ke Gradle Kotlin DSL - Inpows
Migrasi Ke Gradle Kotlin DSL – Inpows

Berdasarkan sumber dari dokumentasi official:

Gradle’s Kotlin DSL provides an alternative syntax to the traditional Groovy DSL with an enhanced editing experience in supported IDEs, with superior content assist, refactoring, documentation, and more.

Secara singkatnya adalah Kita dapat memanfaatkan fungsionalitas dari Kotlin dan fitur saran yang digunakan bersama fitur lain yang ada di IDE seperti file normal Kotlin lainnya. Perhatikan langkah-langkah migrasi yang akan dijelaskan setelah ini.

Mengganti Single-quote menjadi Double-quote

Hal pertama yang perlu kalian lakukan adalah mengganti seluruh single-quote atau petik satu ( ‘ ‘ ) menjadi double-quote atau petik dua ( ” ” ) pada file build.gradle. Kenapa perlu mengubah tanda petik ini? Hal ini dikarenakan bahasa pemrograman Groovy dapat membaca single-quote dan double-quote tapi Kotlin hanya double-quote yang diperbolehkan untuk String. Contohnya adalah seperti dibawah ini:

Sebelum

// sebelum 
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.21'

Sesudah

// sesudah
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.21")

Menggunakan Pemanggilan Fungsi dan = untuk assign operator

Seperti yang kita tahu, pada Groovy kita tidak perlu memerlukan tanda kurung untuk pemanggilan suatu fungsi tapi di Kotlin kita perlu menambahkan tanda kurung. Selain itu, di Groovy untuk assign suatu variabel kita juga tidak perlu menambahkan tanda sama dengan (“=”)  tapi di Kotlin kita harus menggunakan operator sama dengan (“=”). Ini merupakan hal yang positif di Kotlin, karena di Groovy kita bisa saja kebingungan mana yang merupakan pemanggilan fungsi dan mana yang merupakan assign variabel.

Jadi, langkah kita selanjutnya adalah mengganti semua pemanggilan fungsi dengan menggunakan tanda kurung dan semua penetapan langsung dengan menggunakan operator sama dengan (“=”). Contohnya adalah seperti dibawah ini.

// Contoh dari pemanggilan suatu fungsi
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.21")
// Contoh dari assign variabel
defaultConfig {
    versionName = 1
}

Mengubah Nama File

Tahap selanjutnya adalah mengubah nama file dari .gradle mennjadi .gradle.kts karena kita menggunakan Kotlin DSL. Contohnya adalah build.gradle menjadi build.gradle.kts.

Penggunaan Plugin

Pada Gradle Kotlin DSL, penggunaan plugin dapat menggunakan kode seperti dibawah ini.

plugins {
    id("com.google.gms.google-services")
}

// atau

apply(plugin = "com.google.gms.google-services")

Penggunaan URL

Pada Gradle Kotlin DSL, penggunaan URl dapat menggunakan kode seperti dibawah ini.

Sebelum

// sebelum 
maven { url 'https://jitpack.io' }

Sesudah

// sesudah
maven("https://jitpack.io")

Penggunaan Task

Untuk mendaftarkan suatu task pada Gradle Kotlin DSL, anda hanya perlu membuat seperti contoh dibawah ini.

Sebelum

// Sebelum
task clean(type: Delete)  {
    delete rootProject.buildDir
}

Sesudah

// Sesudah
tasks.register("clean",  Delete::class)  {
    delete(rootProject.buildDir)
}

Penggunaan Variabel Boolean

Untuk menggunakan variabel boolean, kamu hanya perlu menambahkan prefix atau awalan “is” pada variabel tersebut. Hal ini juga merupakan kebiasaan yang baik untuk menambahkan atau menggunakan awalan “is” pada variabel boolean pada semua bahasa pemrograman. Contohnya adalah seperti dibawah ini.

Sebelum

// Sebelum
debuggable false

Sesudah

// Sesudah
isDebuggable = false

Penggunaan getByName untuk BuildTypes

Untuk menggunakan berbagai macam build types, kamu hanya perlu menggunakan fungsi getByName seperti dibawah ini.

Sebelum

// Sebelum
buildTypes {
    debug  {
        // ...
    }
    release {  
        // ...
    }
}

Sesudah

// Sesudah
buildTypes {
    getByName("debug") {
        // ...
    }
    getByName("release") {
        // ...
    }
}

Penggunaan mapOf untuk pemetaan atau Mapping

Untuk variabel map, kamu dapat menggunakan fungsi dari mapOf(). Contohnya adalah saat kita ingin menambahkan file dependencies .jar ke dalam file build.gradles.kts. Kamu dapat menggunakan kode seperti dibawah ini.

Sebelum

// Sebelum
implementation fileTree(dir: 'libs', include: ['*.jar'])

Sesudah

// Sesudah
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar"))))

Penggunaan variabel dari project-level Gradle file (root project)

Untuk mengatur dependencies menjadi lebih baik, banyak developer yang menyimpan seluruh versi dari dependencies dalam root-level file build.gradle dan menggunakannya pada app-level file build.gradle. Contoh kode dibawah ini yang dapat kamu gunakan.

// dalam root-level file build.gradle
val kotlinVersion by rootProject.extra("1.3.21")
// dalam app-level file build.gradle
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:${rootProject.extra.get("kotlinVersion")}")

Exclude Library dari semua Dependency

Untuk exclude library dari semua dependency di dalam Kotlin DSL build.gradle, kamu dapat menggunakan kode berikut ini.

configurations {
    all {
        exclude(group = "com.google.guava", module = "listenablefuture")
    }
}

Dengan melakukan migrasi Gradle dari Groovy ke Kotlin DSL memang membutuhkan waktu yang lumayan lama dan tentunya ada beberapa cara lain yang dapat digunakan. Sekarang, dengan menggunakan Gradle Kotlin DSL akan semakin memudahkanmu dalam mengatur kode karena kamu akan mendapatkan auto suggestion, code navigation, dan banyak fitur lainnya yang ada di dalam Kotlin.

nah, sekarang masuk pada bagian penting dimana kalian akan semakin dimudahkan dengan menambahkan central dependency management untuk keseluruhan aplikasi yang dibuat.

Bagaimana cara membuat central dependency management system menggunakan Gradle Kotlin DSL?

Kamu dapat menambahkan direktori baru dengan nama buildSrc dalam root directory dan didalam direktori buildSrc buat file dengan nama build.gradle.kts dan tambahkan kode dibawah ini:

plugins {
    `java-gradle-plugin`
    `kotlin-dsl`
    `kotlin-dsl-precompiled-script-plugins`
}

repositories {
    google()
    mavenCentral()
    maven("https://jitpack.io")
}

kotlinDslPluginOptions {
    experimentalWarning.set(false)
}

object PluginsVersions {
    const val GRADLE_ANDROID = "4.1.3"
    const val KOTLIN = "1.4.32"
}

dependencies {
    implementation("com.android.tools.build:gradle:${PluginsVersions.GRADLE_ANDROID}")
    implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:${PluginsVersions.KOTLIN}")
    implementation("org.jetbrains.kotlin:kotlin-allopen:${PluginsVersions.KOTLIN}")
}

Kemudian, didalam direktori buildSrc buat nested directories dengan memasukkan nama folder yaitu src/main/java. Kamu juga bisa memasukkan nama folder tersebut satu per satu. Lalu, buat file dengan nama Dependencies.kt. Pada file ini kita dapat menyimpan berbagai macam atau semua dependencies dalam bentuk object dengan variable string dengan nilai versi dari dependencies tersebut. Contohnya adalah sebagai berikut.

object Dependencies {
    const val KOTLIN = "org.jetbrains.kotlin:kotlin-stdlib:1.4.32"
    const val APPCOMPAT = "androidx.appcompat:appcompat:1.3.0-alpha02"
}

Sekarang, kamu dapat dependencies pada app-level file build.gradle dengan memanggil nama variabel pada object Dependencies.kt. Contoh kodenya adalah seperti berikut ini.

dependencies {
    implementation(Dependencies.KOTLIN)
    implementation(Dependencies.APPCOMPAT)
}

Dengan menggunakan cara ini, kamu dapat tetap menyimpan semua versi dependencies dalam satu tempat dan kode-kodenya lebih mudah untuk dibaca dan dipahami.

Apakah ada kekurangannya dengan menggunakan Gradle Kotlin DSL dibandingkan dengan Groovy? Jawabannya adalah tentu ada.

Keuntungan dan Kekurangan dari migrasi Gradle ke Kotlin DSL

Dalam pengembangan project yang saya buat hingga saat ini, ada beberapa keuntungan yang dimiliki oleh Gradle dengan Kotlin DSL, yaitu:

  1. Navigasi kode semakin mudah antara filenya karena menggunakan Kotlin DSL
  2. Semua fungsi kotlin dapat dimanfaatkan dalam file Gradle yang anda buat
  3. Karena menggunakan Kotlin, tentunya IDE seperti Android Studio atau IntelliJIDEA menyediakan fitur auto-suggestions yang banyak membantu dalam pengembangan suatu aplikasi

Ada juga kekurangannya, diantaranya adalah sebagai berikut:

  1. Proses migrasi membutuhkan waktu yang cukup lama dan sulit, tapi tentunya dengan melakukan ini tentunya akan terbayarkan dikemudian hari karena kemudahan yang diberikan.
  2. Kamu harus menggunakan versi Java 8 atau yang lebih tinggi untuk menggunakan Gradle dengan Kotlin DSL
  3. Pada beberapa kasus, Gradle Kotlin DSL dapat berjalan lebih lambat dibandingkan dengan Groovy. Akan tetapi, Gradle dengan Kotlin DSL semakin ditingkatkan dan dikemudian hari bisa saja Gradle Kotlin DSL dapat lebih cepat dan efisien.

Jika dilihat dari kelebihan dan kekurangan dapat dilihat kelebihan dari Gradle Kotlin DSL lebih jelas terlihat dan kekurangan ini dapat diperbaiki dikemudian hari. Menurut pendapat saya sendiri, Gradle Kotlin DSL membawa hal positif dalam pengembangan aplikasi terutama di Android dan manajemen dependencies yang mudah dibaca serta kita hanya perlu tahu Kotlin saja tanpa perlu mempelajari Groovy.

 

Temukan source code Kotlin dan Android menarik lainnya hanya di Inpows.

Baca Juga

Menyembunyikan Action Bar Pada Android

Membuat Email Validation pada Android Kotlin

Satu Kali Permission Pada Android 11