Belajar Gradle Kotlin DSL pada Project Android â
Halo Kotliners!
Kali ini saya akan sedikit berbagai mengenai pengalaman menggunakan Kotlin DSL sebagai pengganti Groovy di dalam proyek Android.
Apa itu Gradle?
Semua Android developer pasti tak asing lagi dengan yang namanya Gradle. Ia merupakan sebuah build tools yang umum digunakan dalam pengembangan aplikasi, salah satunya Android. Kamu bisa baca di https://www.gradle.org/ untuk lebih lengkapnya. Sebuah Gradle scripts biasanya dituliskan dengan bahasa pemrograman Groovy. Lalu bisakah Gradle script ditulis dengan Kotlin? Bisa dong. Monggo baca blog ini: Kotlin Meets Gradle.
đ» Mulai Belajar Pemrograman
Belajar pemrograman di Dicoding Academy dan mulai perjalanan Anda sebagai developer profesional.
Daftar SekarangTentunya akan lebih menyenangkan jika menulis sebuah scripts dengan bahasa pemrograman yang kita sukai. Selain lebih mudah, kita juga bisa lebih memahami apa yang kita tulis. Itulah yang saya rasakan ketika pertama kali mencoba Kotlin DSL. Terlebih dengan beberapa âmagicâ yang ditawarkan oleh Android Studio seperti auto complete, deteksi eror, dan yang lainnya.
Apa itu Kotlin DSL?
Sebelumnya, mari kita simak dulu apa itu yang dimaksud dengan Kotlin DSL. Kotlin adalah sebuah bahasa pemrograman yang kaya akan fitur-fitur menarik yang bisa membuat kode lebih ringkas dan ekspresif. Salah satunya adalah dukungan untuk menuliskan domain-specific language atau DSL. Menurut Wikipedia, DSL adalah sebuah bahasa komputer yang dikhususkan utuk domain aplikasi tertentu. Ia berbeda dengan general-purpose language yang bisa diterapkan di semua domain aplikasi.
Salah satu contoh penerapan DSL yang jamak diketahui para developer adalah perintah query pada SQL. Jika memperhatikan statements dalam SQL, kita bisa menyimpulkan bahwa itu hampir mirip seperti kalimat dalam bahasa Inggris: ekspresif dan mudah dibaca. Contoh:
1 |
SELECT Name FROM Customer; |
Perbedaan yang paling terlihat dari kode di atas dengan kode yang biasanya adalah tata bahasa. Kode pada DSL lebih mudah dibaca oleh manusia dan juga lebih mudah dipahami, bahkan untuk orang yang belum mengerti programming. Pada Kotlin sendiri kita bisa menemukan contoh penerapan DSL di dalam beberapa library, salah satunya adalah Anko. Anko adalah sebuah library pada Kotlin yang membuat pengembangan aplikasi Android menjadi lebih cepat dan lebih mudah. Jika tertarik dengan Anko, kamu bisa mempelajarinya di kelas Kotlin Android Developer Expert.
Belajar Gradle Kotlin DSL
Setelah mengetahui sekilas tentang Kotlin DSL, kini saatnya kita memasuki topik utama pada tutorial ini, yaitu menerapkan Kotlin DSL pada Gradle scripts di dalam proyek Android.
Beberapa tools/peralatan yang harus kita siapkan terlebih dahulu adalah:
- Android Studio versi terbaru
- Kotlin versi terbaru
- Gradle versi terbaru
Langkah Migrasi Groovy ke Kotlin
Selanjutnya silakan buat proyek baru dengan Android Studio. Jangan lupa memilih Kotlin sebagai bahasa yang akan digunakan. Di sini saya menggunakan Android Studio versi 3.3.2 dengan Kotlin versi 1.3.21. Setelah itu, periksa versi Gradle pada file gradle-wrapper.properties:
1 2 3 4 5 |
distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-5.0-all.zip |
Saran saya, gunakan Gradle versi 5.0 karena sudah mendukung Kotlin DSL 1.0.
Di sini kita akan fokus pada 3 (tiga) file yang terdapat pada proyek tersebut yaitu settings.gradle, build.gradle (project), dan build.gradle (app). Ketiga file tersebut merupakan Gradle scripts yang secara default dituliskan dengan Groovy. Sekarang saatnya kita akan migrasi dari Groovy ke Kotlin DSL pada file-file tersebut.
Pertama, ubahlah settings.gradle menjadi settings.gradle.kts dan pastikan kode di dalamnya menjadi eror. Kenapa? Karena sudah mengubah file Gradle menjadi Kotlin scripts, tentunya kamu harus mengubah kode di dalamnya menjadi Kotlin DSL.
1 2 3 4 5 |
// before include ':app' // after include(":app") |
Sampai di sini kita sudah melihat perbedaan sederhana dari Groovy dan Kotlin DSL, yakni String pada Groovy dapat dikutip dengan tanda kutip tunggal âstringâ sedangkan Kotlin membutuhkan tanda kutip ganda âstringâ dan tanda kurung ( ) untuk menjalankan fungsinya.
Langkah selanjutnya, lakukan hal yang sama pada file build.gradle (project). Ubahlah menjadi build.gradle.kts dan perbarui kode di dalamnya menggunakan Kotlin DSL. Perhatikan commit history berikut untuk lebih lengkapnya:
Pada perubahan tersebut kamu juga bisa melihat bagaimana sebuah clean task dideklarasikan pada Kotlin DSL.
Terakhir, kita perlu memodifikasi file build.gradle (app). Setelah mengubahnya menjadi build.gradle.kts, kamu akan melihat semua kode di dalamnya mengalami eror seperti gambar berikut:
Mari kita perbaiki satu per satu dengan mengubah kodenya menjadi Kotlin DSL. Mulailah dari 3 (tiga) baris paling atas berikut:
1 2 3 4 5 6 7 8 9 10 11 |
apply plugin: "com.android.application" apply plugin: "kotlin-android" apply plugin: "kotlin-android-extensions" //<em>menjadi</em>: plugins{ id("com.android.application") kotlin("android") kotlin("android.extensions") } |
Salah satu tujuan dari DSL adalah lebih deklaratif. Biasanya kita menggunakan apply plugin untuk mendeklarasikan sebuah plugin. Dengan Kotlin DSL kita cukup menggunakan blok plugins saja.
Lanjutkan ke semua kode yang berada di blok android. Ubahlah menjadi seperti berikut:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
android { compileSdkVersion(28) defaultConfig { applicationId = "com.nrohmen.kotlinandroidcleanarchitecture" minSdkVersion(19) targetSdkVersion(28) versionCode = 1 versionName = "1.0" testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner" } buildTypes { getByName("release"){ isMinifyEnabled = false proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } } } |
Di sini kamu perlu memperhatikan bagaimana sebuah plugin diterapkan. Pada Groovy, kamu bisa menggunakan tanda sama dengan ( = ) untuk menetapkan sebuah nilai, dengan Kotlin DSL kamu perlu mengetahui terlebih dahulu apakah konfigurasi tersebut adalah sebuah function atau property.
Di dalam blok buildTypes kita menggunakan getByName() karena sebenarnya release adalah sebuah string yang diteruskan ke sebuah fungsi yang dipanggil oleh Groovy dan Kotlin tidak akan bisa mengaksesnya. minifyEnabled juga bukan merupakan nama properti yang sebenarnya, maka kita perlu menggunakan nama aslinya, yaitu isMinifyEnabled.
Kemudian pada blok dependencies, kita perlu menyesuaikan kodenya menjadi seperti berikut:
1 2 3 4 5 6 7 8 9 |
dependencies { implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar")))) implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.21") implementation("com.android.support:appcompat-v7:28.0.0") implementation("com.android.support.constraint:constraint-layout:1.1.3") testImplementation("junit:junit:4.12") androidTestImplementation("com.android.support.test:runner:1.0.2") androidTestImplementation("com.android.support.test.espresso:espresso-core:3.0.2") } |
Commit History
Nah, sampai di sini kita sudah berhasil melakukan migrasi dari semua Gradle scripts yang dituliskan dengan Groovy menjadi Kotlin DSL. Untuk lebih jelasnya, kamu bisa melihat commit history berikut:
Kamu juga bisa mempelajari langkah-langkah migrasi yang lebih lengkap pada dokumentasi ini.
Semoga tutorial Belajar Gradle Kotlin DSL pada Project Android ini bermanfaat. Jika ada yang kurang jelas, silakan tulis di kolom komentar ya. Nantikan juga tutorial-tutorial selanjutnya, selain tutorial Belajar Gradle Kotlin DSL ini. Semangat belajar!
Belajar Gradle Kotlin DSL pada Project Android â end
Simak pengalaman developer yang telah mengambil Kotlin Android Developer Expert di
- âPemuda Bali ini Mengembangkan Aplikasi Layanan Ambulan Desa Berbasis Kotlinâ di https://blog.dicoding.com/pemuda-bali-ini-mengembangkan-aplikasi-layanan-ambulan-desa-berbasis-kotlin/
- âBelajar Kotlin di Warung Kopi: Cerita Seorang Developerâ di https://www.dicoding.com/blog/belajar-kotlin-di-warung-kopi-cerita-seorang-developer/Â
- âTak Ada Kata Terlambat: Pindah Karir Programmerâ di https://www.dicoding.com/blog/karir-programmer/
- Mau juga jadi Kotlin Developer Expert dengan sertifikasi yang diakui industri IT dunia? Lihat kurikulum online Kotlin Android Developer Expert di dicoding.id/a/55