Se hai familiarità con la configurazione delle build Android con Kotlin DSL, questa pagina mostra come le configurazioni Kotlin DSL comuni vengono mappate a Lightbuild.
Gli esempi in questa pagina utilizzano Kotlin DSL e il plug-in Android per Gradle (AGP) 9.0 o versioni successive, che include il supporto integrato di Kotlin.
File di build
La tabella seguente mostra l'equivalente Lightbuild di ogni file di build Kotlin DSL:
| Kotlin DSL | Lightbuild | Finalità |
|---|---|---|
settings.gradle.kts |
project.lightbuild.yaml |
Nome del progetto, moduli e repository |
Radice build.gradle.kts e gradle-wrapper.properties |
project.lightbuild.yaml |
Versioni dello strumento di creazione e della toolchain |
Modulo build.gradle.kts |
Modulo lightbuild.yaml |
Tipo di modulo, impostazioni Android, dipendenze e test |
gradle.lockfile |
resolved.deps |
Monitora le versioni delle dipendenze |
Impostazioni progetto
In Kotlin DSL, il file settings.gradle.kts definisce il nome del progetto, i suoi moduli e i repository da cui risolvere le dipendenze:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
rootProject.name = "MyApp"
include(":app")
include(":app-core")
In Lightbuild, il file project.lightbuild.yaml definisce le stesse impostazioni:
project:
name: MyApp
modules:
- app
- app-core
repositories:
- google
- mavenCentral
La tabella seguente mette a confronto le impostazioni a livello di progetto:
| Concetto | Kotlin DSL | Lightbuild |
|---|---|---|
| Nome progetto | rootProject.name |
project.name |
| Moduli | include(":app") |
modules |
| Repository | repositories in dependencyResolutionManagement |
repositories |
| Repository Maven personalizzato | maven { url = uri("https://maven.example.com/releases") } |
maven con name e url |
| Credenziali del repository | credentials nel blocco maven |
credentials con le chiavi definite in local.properties |
| Versione dello strumento di build | Versione di Gradle in gradle-wrapper.properties e versione di AGP nel blocco plugins |
lightbuild.version |
| Versione Kotlin | Integrato in AGP. Per utilizzare una versione più recente, aggiungi kotlin-gradle-plugin al classpath buildscript. |
build.kotlin.version |
| Versione Java | kotlin { jvmToolchain(17) } |
build.java.version |
Tipo di modulo e plug-in
In Kotlin DSL, scegli il tipo di modulo applicando un plug-in e applichi altri plug-in per aggiungere funzionalità come KSP. In Lightbuild, imposti il type del modulo e Lightbuild applica le funzionalità necessarie per la tua configurazione:
| Concetto | Kotlin DSL | Lightbuild |
|---|---|---|
| Modulo dell'app | id("com.android.application") |
type: application |
| Modulo Libreria | id("com.android.library") |
type: library |
| Modulo Kotlin Multiplatform (KMP) | id("org.jetbrains.kotlin.multiplatform") |
Non ancora supportata |
| Kotlin | Integrato in AGP 9.0 e versioni successive | Integrato |
| KSP | id("com.google.devtools.ksp") |
Applicato automaticamente quando dichiari kspProcessors |
| Buffer di protocollo | id("com.google.protobuf") |
com.android.tools.lightbuild.protobuf in optionalFeatures |
| Cataloghi delle versioni | libs.versions.toml file |
Non ancora supportata |
| Altri plug-in | Applica il plug-in Gradle | Non ancora supportata |
Impostazioni di Android
In Kotlin DSL, configura le impostazioni di Android nel blocco android del file build.gradle.kts di un modulo:
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"
}
}
In Lightbuild, configuri le stesse impostazioni nel blocco android del file lightbuild.yaml di un modulo:
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"
La tabella seguente mette a confronto queste impostazioni:
| Impostazione | Kotlin DSL | Lightbuild |
|---|---|---|
| Spazio dei nomi | namespace |
namespace |
| SDK di compilazione | compileSdk = 36 |
compileSdk.version.release.apiLevel: 36 |
| SDK minimo | minSdk = 24 in defaultConfig |
minSdk.version.release.apiLevel: 24 |
| SDK target | targetSdk = 36 in defaultConfig |
targetSdk.version.release.apiLevel: 36 |
| ID applicazione | applicationId in defaultConfig |
applicationId |
| Codice versione | versionCode in defaultConfig |
versionCode |
| Nome versione | versionName in defaultConfig |
versionName |
| Firma della release | signingConfigs e signingConfig nel tipo di build release |
packaging.release.signing |
Dipendenze
In Kotlin DSL, dichiari le dipendenze nel blocco dependencies, utilizzando configurazioni come implementation:
dependencies {
implementation(project(":app-core"))
implementation("androidx.core:core-ktx:1.18.0")
}
In Lightbuild, elenchi le dipendenze dei moduli in module e le librerie esterne in maven:
android:
dependencies:
module:
- //app-core
maven:
- androidx.core:core-ktx:1.18.0
Kotlin DSL utilizza altre configurazioni, come api, compileOnly e runtimeOnly, per controllare il modo in cui un modulo utilizza una dipendenza:
dependencies {
api(project(":data"))
compileOnly("androidx.annotation:annotation:1.9.1")
}
In Lightbuild, aggiungi invece le impostazioni compile e runtime alla dipendenza:
android:
dependencies:
module:
- //data:
compile: public
maven:
- androidx.annotation:annotation:1.9.1:
runtime: off
Per ulteriori informazioni su queste impostazioni, consulta Impostazioni delle dipendenze.
La tabella seguente mette a confronto le dichiarazioni di dipendenza comuni:
| Dipendenza | Kotlin DSL | Lightbuild |
|---|---|---|
| Modulo nel progetto | implementation(project(":app-core")) |
//app-core in android.dependencies.module |
| Libreria esterna | implementation("group:artifact:version") |
group:artifact:version in android.dependencies.maven |
| Dipendenza API | api("group:artifact:version") |
group:artifact:version in android.dependencies.maven, con compile: public |
| Dipendenza solo per la compilazione | compileOnly("group:artifact:version") |
group:artifact:version in android.dependencies.maven, con runtime: off |
| Dipendenza solo runtime | runtimeOnly("group:artifact:version") |
group:artifact:version in android.dependencies.maven, con compile: off |
| Processore KSP | ksp("group:artifact:version") |
group:artifact:version in android.kspProcessors.maven |
| Dipendenza di test locale | testImplementation("group:artifact:version") |
group:artifact:version in android.tests.test.dependencies.maven |
| Dipendenza del test strumentato | androidTestImplementation("group:artifact:version") |
group:artifact:version in android.tests.androidTest.dependencies.maven |
KSP
In Kotlin DSL, applichi il plug-in KSP e aggiungi i processori con la configurazione 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")
}
In Lightbuild, aggiungi i processori al blocco kspProcessors e Lightbuild applica automaticamente il plug-in KSP:
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
Test
In Kotlin DSL, imposti l'esecutore dei test di instrumentazione in defaultConfig e aggiungi le dipendenze di test con le configurazioni testImplementation e 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")
}
In Lightbuild, configuri i test locali in tests.test e i test di instrumentazione in 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
Comandi di build
Con Kotlin DSL, puoi creare ed eseguire test dalla riga di comando eseguendo le attività Gradle con il wrapper Gradle. Con Lightbuild, utilizzi l'interfaccia a riga di comando di Lightbuild.
| Attività | Wrapper Gradle | Interfaccia a riga di comando Lightbuild |
|---|---|---|
| Crea il modulo dell'app | ./gradlew :app:assembleDebug |
lightbuild build app |
| Crea tutti i target | ./gradlew assemble |
lightbuild build |
| Esegui i test locali di un modulo | ./gradlew :app-core:test |
lightbuild test app-core:hostTest |
| Esegui i test di instrumentazione di un modulo | ./gradlew :app-core:connectedAndroidTest |
lightbuild test app-core:deviceTest |
| Esegui tutti i test | ./gradlew test connectedAndroidTest |
lightbuild test |
| Rimuovi l'output e le cache della build | ./gradlew clean |
lightbuild clean |
Per saperne di più, consulta Crea la tua app dalla riga di comando e Crea progetti Lightbuild dalla riga di comando.
Blocco delle dipendenze
Con Kotlin DSL, il blocco delle dipendenze è facoltativo:
lo attivi negli script di build e poi scrivi i file di blocco eseguendo una
build con il flag --write-locks. In Lightbuild, ogni modulo ha un file resolved.deps che registra le dipendenze risolte del modulo, che Lightbuild genera automaticamente. Come per i file di blocco Gradle, esegui il commit dei file resolved.deps nel controllo della versione.
Per bloccare le dipendenze, ad esempio in una build CI, aggiungi il flag --locked-dependencies a lightbuild resolve o lightbuild test. Con questo flag, il comando non va a buon fine se un file resolved.deps non corrisponde alle dipendenze del modulo, anziché aggiornare il file:
lightbuild resolve --locked-dependencies
Funzionalità non supportate
Lightbuild non supporta le seguenti funzionalità di Kotlin DSL:
- Cataloghi delle versioni e plug-in di convenzione
- Plug-in personalizzati
- Versioni prodotto. Crea invece un modulo dell'app separato per ogni versione della tua app. Per maggiori informazioni, consulta la sezione Più moduli dell'app.
- Moduli Kotlin Multiplatform (KMP)
- Risoluzione delle dipendenze tramite un server proxy
Inoltre, un progetto non può combinare moduli Kotlin DSL e Lightbuild. Per i problemi noti, consulta le note di rilascio di Lightbuild.
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Riferimento alla configurazione di Lightbuild
- Struttura del progetto Lightbuild
- Inizia a utilizzare Lightbuild