Jika Anda sudah memahami cara mengonfigurasi build Android dengan Kotlin DSL, halaman ini menunjukkan cara konfigurasi Kotlin DSL umum dipetakan ke Lightbuild.
Contoh di halaman ini menggunakan DSL Kotlin dan plugin Android Gradle (AGP) 9.0 atau yang lebih tinggi, yang menyertakan dukungan Kotlin bawaan.
File build
Tabel berikut menunjukkan file build Kotlin DSL yang setara dengan Lightbuild:
| DSL Kotlin | Lightbuild | Tujuan |
|---|---|---|
settings.gradle.kts |
project.lightbuild.yaml |
Nama project, modul, dan repositori |
Root build.gradle.kts dan gradle-wrapper.properties |
project.lightbuild.yaml |
Versi alat build dan toolchain |
Modul build.gradle.kts |
Modul lightbuild.yaml |
Jenis modul, setelan Android, dependensi, dan pengujian |
gradle.lockfile |
resolved.deps |
Melacak versi dependensi |
Setelan project
Dalam DSL Kotlin, file settings.gradle.kts menentukan nama project, modulnya, dan repositori untuk me-resolve dependensi:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
rootProject.name = "MyApp"
include(":app")
include(":app-core")
Di Lightbuild, file project.lightbuild.yaml menentukan setelan yang sama:
project:
name: MyApp
modules:
- app
- app-core
repositories:
- google
- mavenCentral
Tabel berikut membandingkan setelan di seluruh project:
| Konsep | DSL Kotlin | Lightbuild |
|---|---|---|
| Nama project | rootProject.name |
project.name |
| Modul | include(":app") |
modules |
| Repositori | repositories di dependencyResolutionManagement |
repositories |
| Repositori Maven kustom | maven { url = uri("https://maven.example.com/releases") } |
maven dengan name dan url |
| Kredensial repositori | credentials dalam blok maven |
credentials dengan kunci yang Anda tentukan di local.properties |
| Versi alat build | Versi Gradle di gradle-wrapper.properties, dan versi AGP di blok plugins |
lightbuild.version |
| Versi Kotlin | Terintegrasi ke dalam AGP. Untuk menggunakan versi yang lebih baru, tambahkan kotlin-gradle-plugin ke classpath buildscript. |
build.kotlin.version |
| Versi Java | kotlin { jvmToolchain(17) } |
build.java.version |
Jenis modul dan plugin
Di DSL Kotlin, Anda memilih jenis modul dengan menerapkan plugin, dan Anda menerapkan
plugin lain untuk menambahkan fitur seperti KSP. Di Lightbuild, Anda menetapkan type modul, dan Lightbuild akan menerapkan fitur yang diperlukan konfigurasi Anda:
| Konsep | DSL Kotlin | Lightbuild |
|---|---|---|
| Modul aplikasi | id("com.android.application") |
type: application |
| Modul library | id("com.android.library") |
type: library |
| Modul Kotlin Multiplatform (KMP) | id("org.jetbrains.kotlin.multiplatform") |
Belum didukung |
| Kotlin | Terintegrasi dalam AGP 9.0 dan yang lebih tinggi | Bawaan |
| nilai jual utama | id("com.google.devtools.ksp") |
Diterapkan secara otomatis saat Anda mendeklarasikan kspProcessors |
| Buffering Protokol | id("com.google.protobuf") |
com.android.tools.lightbuild.protobuf di optionalFeatures |
| Katalog versi | libs.versions.toml file |
Belum didukung |
| Plugin lainnya | Menerapkan plugin Gradle | Belum didukung |
Setelan Android
Di DSL Kotlin, Anda mengonfigurasi setelan Android di blok android pada file build.gradle.kts modul:
plugins {
id("com.android.application")
}
android {
namespace = "com.example.myapp.app"
compileSdk = 36
defaultConfig {
applicationId = "com.example.myapp"
minSdk = 24
targetSdk = 36
versionCode = 1
versionName = "1.0"
}
}
Di Lightbuild, Anda mengonfigurasi setelan yang sama di blok android pada file lightbuild.yaml modul:
platform: android
type: application
android:
namespace: com.example.myapp.app
compileSdk:
version:
release:
apiLevel: 36
minSdk:
version:
release:
apiLevel: 24
targetSdk:
version:
release:
apiLevel: 36
applicationId: com.example.myapp
versionCode: 1
versionName: "1.0"
Tabel berikut membandingkan setelan ini:
| Setelan | DSL Kotlin | Lightbuild |
|---|---|---|
| Namespace | namespace |
namespace |
| Compile SDK | compileSdk = 36 |
compileSdk.version.release.apiLevel: 36 |
| SDK Minimum | minSdk = 24 di defaultConfig |
minSdk.version.release.apiLevel: 24 |
| SDK Target | targetSdk = 36 di defaultConfig |
targetSdk.version.release.apiLevel: 36 |
| ID Aplikasi | applicationId di defaultConfig |
applicationId |
| Kode versi | versionCode di defaultConfig |
versionCode |
| Nama versi | versionName di defaultConfig |
versionName |
| Penandatanganan rilis | signingConfigs, dan signingConfig dalam jenis build release |
packaging.release.signing |
Dependensi
Di DSL Kotlin, Anda mendeklarasikan dependensi dalam blok dependencies, menggunakan
konfigurasi seperti implementation:
dependencies {
implementation(project(":app-core"))
implementation("androidx.core:core-ktx:1.18.0")
}
Di Lightbuild, Anda mencantumkan dependensi modul di bagian module, dan library eksternal di bagian maven:
android:
dependencies:
module:
- //app-core
maven:
- androidx.core:core-ktx:1.18.0
DSL Kotlin menggunakan konfigurasi lain, seperti api, compileOnly, dan
runtimeOnly, untuk mengontrol cara modul menggunakan dependensi:
dependencies {
api(project(":data"))
compileOnly("androidx.annotation:annotation:1.9.1")
}
Di Lightbuild, Anda menambahkan setelan compile dan runtime ke dependensi:
android:
dependencies:
module:
- //data:
compile: public
maven:
- androidx.annotation:annotation:1.9.1:
runtime: off
Untuk mengetahui informasi selengkapnya tentang setelan ini, lihat Setelan dependensi.
Tabel berikut membandingkan deklarasi dependensi umum:
| Dependensi | DSL Kotlin | Lightbuild |
|---|---|---|
| Modul dalam project Anda | implementation(project(":app-core")) |
//app-core di android.dependencies.module |
| Library eksternal | implementation("group:artifact:version") |
group:artifact:version di android.dependencies.maven |
| Dependensi API | api("group:artifact:version") |
group:artifact:version di android.dependencies.maven, dengan compile: public |
| Dependensi khusus kompilasi | compileOnly("group:artifact:version") |
group:artifact:version di android.dependencies.maven, dengan runtime: off |
| Dependensi khusus runtime | runtimeOnly("group:artifact:version") |
group:artifact:version di android.dependencies.maven, dengan compile: off |
| Pemroses KSP | ksp("group:artifact:version") |
group:artifact:version di android.kspProcessors.maven |
| Dependensi pengujian lokal | testImplementation("group:artifact:version") |
group:artifact:version di android.tests.test.dependencies.maven |
| Dependensi pengujian berinstrumen | androidTestImplementation("group:artifact:version") |
group:artifact:version di android.tests.androidTest.dependencies.maven |
nilai jual utama
Di DSL Kotlin, Anda menerapkan plugin KSP dan menambahkan pemroses dengan konfigurasi ksp:
plugins {
id("com.android.library")
id("com.google.devtools.ksp")
}
dependencies {
implementation("com.squareup.moshi:moshi:1.15.2")
implementation("com.squareup.moshi:moshi-kotlin:1.15.2")
ksp("com.squareup.moshi:moshi-kotlin-codegen:1.15.2")
}
Di Lightbuild, Anda menambahkan pemroses ke blok kspProcessors, dan Lightbuild
akan menerapkan plugin KSP secara otomatis:
type: library
android:
dependencies:
maven:
- com.squareup.moshi:moshi:1.15.2
- com.squareup.moshi:moshi-kotlin:1.15.2
kspProcessors:
maven:
- com.squareup.moshi:moshi-kotlin-codegen:1.15.2
Pengujian
Di Kotlin DSL, Anda menetapkan runner uji instrumentasi di defaultConfig, dan
menambahkan dependensi pengujian dengan konfigurasi testImplementation dan
androidTestImplementation:
android {
defaultConfig {
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
}
dependencies {
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.3.0")
androidTestImplementation("androidx.test.espresso:espresso-core:3.7.0")
}
Di Lightbuild, Anda mengonfigurasi pengujian lokal di tests.test dan uji instrumentasi di tests.androidTest:
android:
tests:
test:
dependencies:
maven:
- junit:junit:4.13.2
androidTest:
runner: androidx.test.runner.AndroidJUnitRunner
dependencies:
maven:
- androidx.test.ext:junit:1.3.0
- androidx.test.espresso:espresso-core:3.7.0
Perintah build
Dengan Kotlin DSL, Anda mem-build dan menguji dari command line dengan menjalankan tugas Gradle menggunakan wrapper Gradle. Dengan Lightbuild, Anda menggunakan Lightbuild CLI.
| Tugas | Wrapper Gradle | Lightbuild CLI |
|---|---|---|
| Membangun modul aplikasi | ./gradlew :app:assembleDebug |
lightbuild build app |
| Membangun semua target | ./gradlew assemble |
lightbuild build |
| Menjalankan pengujian lokal modul | ./gradlew :app-core:test |
lightbuild test app-core:hostTest |
| Menjalankan pengujian berinstrumen modul | ./gradlew :app-core:connectedAndroidTest |
lightbuild test app-core:deviceTest |
| Menjalankan semua pengujian | ./gradlew test connectedAndroidTest |
lightbuild test |
| Menghapus output build dan cache | ./gradlew clean |
lightbuild clean |
Untuk mengetahui informasi selengkapnya, lihat Mem-build aplikasi dari command line dan Mem-build project Lightbuild dari command line.
Penguncian dependensi
Dengan DSL Kotlin, penguncian dependensi bersifat opsional:
Anda mengaktifkannya di skrip build, lalu menulis file kunci dengan menjalankan
build dengan flag --write-locks. Di Lightbuild, setiap modul memiliki file resolved.deps yang mencatat dependensi modul yang telah diselesaikan, yang dibuat secara otomatis oleh Lightbuild. Seperti file kunci Gradle, periksa file resolved.deps Anda ke kontrol versi.
Untuk mengunci dependensi, misalnya dalam build CI, tambahkan
flag --locked-dependencies ke lightbuild resolve atau lightbuild test. Dengan flag ini, perintah akan gagal jika file resolved.deps tidak cocok dengan dependensi modul, bukan mengupdate file:
lightbuild resolve --locked-dependencies
Fitur yang tidak didukung
Lightbuild tidak mendukung fitur DSL Kotlin berikut:
- Katalog versi dan plugin konvensi
- Plugin kustom
- Ragam produk. Sebagai gantinya, buat modul aplikasi terpisah untuk setiap versi aplikasi Anda. Untuk informasi selengkapnya, lihat Beberapa modul aplikasi.
- Modul Kotlin Multiplatform (KMP)
- Resolusi dependensi melalui server proxy
Selain itu, project tidak dapat menggabungkan modul DSL Kotlin dan Lightbuild. Untuk mengetahui masalah umum, lihat catatan rilis Lightbuild.
Direkomendasikan untuk Anda
- Catatan: teks link ditampilkan saat JavaScript nonaktif
- Referensi konfigurasi Lightbuild
- Struktur project Lightbuild
- Mulai menggunakan Lightbuild