Back to Pengembangan Android dengan Kotlin

Android Project Configuration and Build Process

Questions/Cues

  • Apa peran file build.gradle dalam proyek Android?
  • Bagaimana menentukan versi SDK minimum dan target?
  • Bagaimana struktur direktori proyek Android disusun?
  • Apa fungsi Gradle dalam proses build Android?
  • Bagaimana mengelola dependensi eksternal dalam proyek?
  • Apa perbedaan compileSdkVersion dan targetSdkVersion?

Reference Points

  • Android Development with Kotlin (Slides 41-49, 79-86)
  • Android Development with Kotlin (Slide 22)
  • Android Development with Kotlin (Slide 47)
  • Android Development with Kotlin (Slide 81-86)

Struktur Proyek Android

Proyek Android di Android Studio memiliki struktur direktori yang terorganisir. Folder utama berisi modul aplikasi (app), file konfigurasi Gradle (build.gradle), dan skrip wrapper Gradle (gradlew). Di dalam modul app, terdapat direktori src yang memisahkan kode sumber (main/java), sumber daya (res), dan file manifes (AndroidManifest.xml).

Contoh struktur dasar:


MyApplication

├── app

│   └── src

│       ├── main

│       │   ├── java      # Kode sumber Kotlin/Java

│       │   ├── res       # Layout, gambar, string

│       │   └── AndroidManifest.xml

├── build.gradle          # Konfigurasi level proyek

└── gradlew               # Skrip eksekusi Gradle

Setiap direktori res memiliki subfolder khusus seperti layout untuk XML UI, drawable untuk aset gambar, dan values untuk konstanta string/color.

Konfigurasi Versi SDK

File build.gradle (Module: app) menentukan tiga parameter SDK penting:

  1. compileSdkVersion: Versi SDK untuk kompilasi (harus versi terbaru)
  2. minSdkVersion: Versi minimum OS yang didukung
  3. targetSdkVersion: Versi OS yang dioptimalkan

Contoh konfigurasi:

 
android {
 
compileSdkVersion 33
 
defaultConfig {
 
minSdkVersion 21   // Android 5.0 Lollipop
 
targetSdkVersion 33 // Android 13
 
}
 
}
 

Relasi versi harus memenuhi: minSdkVersion ≤ targetSdkVersion ≤ compileSdkVersion. Versi SDK yang lebih tinggi memungkinkan penggunaan fitur terbaru tetapi mengurangi kompatibilitas dengan perangkat lama.

Sistem Build dengan Gradle

Gradle adalah sistem otomasi build yang mengelola:

  • Kompilasi kode dan sumber daya
  • Pengemasan APK/AAB
  • Manajemen dependensi
  • Tugas pengujian

Ada dua jenis file build.gradle:

  1. Level Proyek: Mengkonfigurasi repositori dan plugin
 
buildscript {
 
repositories {
 
google()    // Repositori plugin Android
 
mavenCentral()
 
}
 
dependencies {
 
classpath 'com.android.tools.build:gradle:7.4.2'
 
}
 
}
 
  1. Level Modul: Mengatur SDK, versi aplikasi, dan dependensi

Manajemen Dependensi

Dependensi eksternal dideklarasikan di build.gradle (Module: app) dalam blok dependencies. Tiga jenis dependensi utama:

  1. Implementasi lokal: implementation files('libs/local-library.jar')
  2. Modul lokal: implementation project(':mylibrary')
  3. Repositori eksternal: implementation 'com.google.android.material:material:1.9.0'

Contoh:

 
dependencies {
 
implementation 'androidx.core:core-ktx:1.10.1'  // Library AndroidX
 
testImplementation 'junit:junit:4.13.2'          // Testing
 
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
 
}
 

Gradle secara otomatis mendownload dependensi dari repositori yang dikonfigurasi (Google’s Maven, Maven Central).

Proses Build Android

Proses build mengubah kode sumber menjadi APK melalui tahapan:

  1. Kompilasi sumber daya (XML, gambar) ke format biner
  2. Kompilasi kode Kotlin/Java ke bytecode DEX
  3. Penggabungan aset dan kode ke APK mentah
  4. Penandatanganan dengan kunci digital
  5. Optimasi dengan alat seperti R8/ProGuard

Perintah Gradle umum:

  • ./gradlew assembleDebug: Membuat APK debug
  • ./gradlew installDebug: Menginstal APK ke perangkat
  • ./gradlew clean: Menghapus output build sebelumnya

Summary

Konfigurasi proyek Android melibatkan struktur direktori spesifik dengan file manifes, kode sumber, dan sumber daya terpisah. Gradle berfungsi sebagai tulang punggung proses build dengan mengelola dependensi, versi SDK (minSdkVersion, targetSdkVersion, compileSdkVersion), dan tugas kompilasi. Manajemen dependensi dilakukan melalui deklarasi dalam build.gradle yang terhubung ke repositori eksternal. Proses build melalui tahapan kompilasi sumber daya, konversi kode ke DEX, pengemasan APK, dan penandatanganan untuk menghasilkan aplikasi yang dapat dijalankan di perangkat Android.