Belajar Kotlin - Kotlin for Android Development
Episode 10 of 23

Belajar Kotlin - Kotlin for Android Development

Episode ini menerapkan Kotlin untuk pengembangan Android: setup project Android dengan Gradle Kotlin DSL, fitur khusus Android seperti extension functions dan ViewBinding, ViewModel dan LiveData bersama coroutines, serta dasar Jetpack Compose yang menulis UI secara deklaratif.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

Kotlin dan Android berjalan beriringan sejak 2017. Episode 10 membawa kalian ke dunia Android: setup project dengan Kotlin, fitur-fitur yang membuat pengembangan Android nyaman, arsitektur ViewModel dan LiveData, serta Jetpack Compose yang menulis UI secara deklaratif dengan Kotlin DSL.

Android adalah kasus penggunaan Kotlin paling masif, jadi menguasainya membuka pintu menuju ekosistem dan lowongan yang luas. Meskipun demikian, prinsip yang kalian pelajari — lifecycle, coroutines, dan arsitektur — berlaku juga untuk backend di episode 11.

Di akhir episode ini kalian akan menjalankan aplikasi Android pertama yang menampilkan data secara asinkron dengan pola modern.

Setup Project Android dengan Kotlin

Gradle Kotlin DSL dan Plugin

Project Android modern memakai Gradle dengan Kotlin DSL. Konfigurasi inti di file build.gradle.kts:

Kotlinbuild.gradle.kts
plugins {
    id("com.android.application") version "8.5.0" apply false
    id("org.jetbrains.kotlin.android") version "2.0.0" apply false
}
 
android {
    namespace = "id.devnull.myapp"
    compileSdk = 35
    defaultConfig {
        applicationId = "id.devnull.myapp"
        minSdk = 24
        targetSdk = 35
    }
    kotlinOptions {
        jvmTarget = "17"
    }
}

namespace menentukan package aplikasi, compileSdk mengarahkan level API SDK, dan jvmTarget menyelaraskan bytecode dengan JDK. Project Android dibangun dengan perintah ./gradlew assembleDebug yang menghasilkan APK debug.

Struktur Project Standar

Project Android disusun dalam direktori app/src/main untuk kode utama, app/src/androidTest untuk instrumentasi, dan app/src/test untuk unit test lokal. Layout utama: MainActivity.kt sebagai entry point dan AndroidManifest.xml yang mendeklarasikan komponen aplikasi.

Fitur Android yang Sering Dipakai

Extension Functions dan ViewBinding

Extension functions membuat akses view dan parsing intent lebih ringkas. ViewBinding menggantikan findViewById yang rawan error dengan binding yang aman tipe:

KotlinExtension function untuk toast
fun Context.showToast(pesan: String) {
    Toast.makeText(this, pesan, Toast.LENGTH_SHORT).show()
}

Dengan extension function di atas, pemanggilan showToast("Tersimpan") tersedia untuk semua Context di aplikasi. Ekosistem Android memakai pola extension seperti ini sangat luas — dari konversi dp ke pixel sampai akses extra intent.

ViewModel dan LiveData

ViewModel menyimpan data UI yang bertahan dari perubahan konfigurasi, seperti rotasi layar. LiveData adalah observable data holder yang lifecycle-aware:

KotlinViewModel dengan LiveData
import androidx.lifecycle.ViewModel
import androidx.lifecycle.MutableLiveData
 
class MainViewModel : ViewModel() {
    private val _jumlah = MutableLiveData(0)
    val jumlah: LiveData<Int> = _jumlah
 
    fun tambah() {
        _jumlah.value = (_jumlah.value ?: 0) + 1
    }
}

MutableLiveData untuk menulis di dalam ViewModel, dan LiveData yang read-only untuk dipakai UI. Pemakaian _jumlah.value memakai elvis operator episode 6 untuk nilai awal null.

Coroutines di Android

Panggilan data di Android memakai coroutines dengan viewModelScope — scope otomatis yang dibatalkan saat ViewModel dibersihkan:

KotlinCoroutines di ViewModel
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.launch
 
class DataViewModel : ViewModel() {
    fun muatData() {
        viewModelScope.launch {
            val data = withContext(Dispatchers.IO) { repo.ambil() }
            tampilkan(data)
        }
    }
}

viewModelScope.launch menjalankan coroutine yang otomatis dibatalkan ketika ViewModel dihancurkan — tidak ada lagi pekerjaan latar yang bocor. withContext(Dispatchers.IO) memindahkan operasi I/O ke thread yang tepat.

Jetpack Compose Basics

UI Deklaratif dengan Kotlin

Jetpack Compose adalah toolkit UI modern yang menulis antarmuka dengan fungsi Kotlin alih-alih layout XML. Antarmuka dinyatakan sebagai function @Composable:

KotlinComposable sederhana
import androidx.compose.material3.*
 
@Composable
fun LayarSapaan(nama: String) {
    Text(text = "Halo, $nama!", style = MaterialTheme.typography.titleLarge)
}

Fungsi LayarSapaan dipanggil dalam hierarki UI dan merender teks. Keadaan yang berubah memicu recomposition otomatis — kalian tidak lagi menulis findViewById dan update manual.

State dan Recomposition

Compose melacak state dengan remember dan mutableStateOf:

KotlinState di Compose
import androidx.compose.runtime.*
 
@Composable
fun Counter() {
    var jumlah by remember { mutableStateOf(0) }
    Button(onClick = { jumlah++ }) {
        Text("Klik: $jumlah")
    }
}

Saat jumlah berubah, fungsi composable dijalankan ulang dan UI diperbarui. Model deklaratif ini menghapus seluruh kelas bug sinkronisasi antara state dan view yang sering terjadi di Android klasik.

Menjalankan Aplikasi Android

Build dan Deploy

Aplikasi di-build dan dijalankan dengan tooling Gradle dan Android Studio:

Build APK dan install
./gradlew assembleDebug
./gradlew installDebug
adb logcat --pid=$(adb shell pidof -s id.devnull.myapp)

./gradlew installDebug menginstall APK ke emulator atau perangkat yang terhubung, dan adb logcat menampilkan log aplikasi saat runtime. Keduanya menjadi workflow harian pengembang Android.

Penutup

Episode 10 menerapkan Kotlin di Android: setup project dengan Gradle Kotlin DSL, extension functions dan ViewBinding, arsitektur ViewModel dan LiveData bersama viewModelScope, serta Jetpack Compose yang menulis UI deklaratif dengan Kotlin DSL.

Inti yang harus dibawa pulang:

  • Konfigurasi Android ditulis dengan Gradle Kotlin DSL di build.gradle.kts.
  • Extension functions mempermudah kerja dengan Context dan view.
  • ViewModel bertahan dari perubahan konfigurasi; LiveData lifecycle-aware.
  • viewModelScope membatalkan coroutine otomatis saat ViewModel dibersihkan.
  • Compose menulis UI dengan function @Composable dan state.
  • ./gradlew assembleDebug dan installDebug adalah workflow dasar.

Di episode 11 selanjutnya kita akan membahas Kotlin for backend development — membangun backend dengan Ktor, Spring Boot, atau Micronaut, routing dan request handling, serialization, dependency injection dan configuration, serta menulis REST API dengan middleware.

Belajar Kotlin - Kotlin for Android Development | Belajar Kotlin