Wenn Sie mit der Konfiguration von Android-Builds mit Kotlin DSL vertraut sind, finden Sie auf dieser Seite Informationen dazu, wie gängige Kotlin DSL-Konfigurationen in Lightbuild abgebildet werden.
In den Beispielen auf dieser Seite werden Kotlin DSL und das Android-Gradle-Plug-in (AGP) 9.0 oder höher verwendet, das integrierte Kotlin-Unterstützung bietet.
Build-Dateien
In der folgenden Tabelle sehen Sie die Lightbuild-Entsprechung für jede Kotlin DSL-Build-Datei:
| Kotlin DSL | Lightbuild | Zweck |
|---|---|---|
settings.gradle.kts |
project.lightbuild.yaml |
Projektname, Module und Repositories |
Root build.gradle.kts und gradle-wrapper.properties |
project.lightbuild.yaml |
Build-Tool- und Toolchain-Versionen |
Modul build.gradle.kts |
Modul lightbuild.yaml |
Modultyp, Android-Einstellungen, Abhängigkeiten und Tests |
gradle.lockfile |
resolved.deps |
Abhängigkeitsversionen verfolgen |
Projekteinstellungen
In der Kotlin-DSL definiert die Datei settings.gradle.kts den Namen des Projekts, seine Module und die Repositories, aus denen Abhängigkeiten aufgelöst werden sollen:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
rootProject.name = "MyApp"
include(":app")
include(":app-core")
In Lightbuild werden dieselben Einstellungen in der Datei project.lightbuild.yaml definiert:
project:
name: MyApp
modules:
- app
- app-core
repositories:
- google
- mavenCentral
In der folgenden Tabelle werden projektweite Einstellungen verglichen:
| Vorgabe | Kotlin DSL | Lightbuild |
|---|---|---|
| Projektname | rootProject.name |
project.name |
| Module | include(":app") |
modules |
| Repositories | repositories in dependencyResolutionManagement |
repositories |
| Benutzerdefiniertes Maven-Repository | maven { url = uri("https://maven.example.com/releases") } |
maven mit name und url |
| Repository-Anmeldedaten | credentials im Block maven |
credentials mit Schlüsseln, die Sie in local.properties definieren |
| Build-Tool-Version | Gradle-Version in gradle-wrapper.properties und AGP-Version im Block plugins |
lightbuild.version |
| Kotlin-Version | In AGP integriert. Wenn Sie eine neuere Version verwenden möchten, fügen Sie kotlin-gradle-plugin dem buildscript-Klassenpfad hinzu. |
build.kotlin.version |
| Java-Version | kotlin { jvmToolchain(17) } |
build.java.version |
Modultyp und Plug-ins
In Kotlin DSL wählen Sie den Typ eines Moduls aus, indem Sie ein Plug-in anwenden. Sie können auch andere Plug-ins anwenden, um Funktionen wie KSP hinzuzufügen. In Lightbuild legen Sie die type des Moduls fest und Lightbuild wendet die Funktionen an, die für Ihre Konfiguration erforderlich sind:
| Vorgabe | Kotlin DSL | Lightbuild |
|---|---|---|
| App-Modul | id("com.android.application") |
type: application |
| Modul „Bibliothek“ | id("com.android.library") |
type: library |
| Kotlin Multiplatform-Modul (KMP) | id("org.jetbrains.kotlin.multiplatform") |
Noch nicht unterstützt |
| Kotlin | In AGP 9.0 und höher integriert | Integriert |
| KSP | id("com.google.devtools.ksp") |
Wird automatisch angewendet, wenn Sie kspProcessors deklarieren |
| Protokollpuffer | id("com.google.protobuf") |
com.android.tools.lightbuild.protobuf in optionalFeatures |
| Versionskataloge | libs.versions.toml Datei |
Noch nicht unterstützt |
| Andere Plug‑ins | Gradle-Plug-in anwenden | Noch nicht unterstützt |
Android-Einstellungen
In Kotlin DSL konfigurieren Sie Android-Einstellungen im android-Block der build.gradle.kts-Datei eines Moduls:
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 konfigurieren Sie dieselben Einstellungen im android-Block der lightbuild.yaml-Datei eines Moduls:
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"
In der folgenden Tabelle werden diese Einstellungen verglichen:
| Einstellung | Kotlin DSL | Lightbuild |
|---|---|---|
| Namespace | namespace |
namespace |
| SDK kompilieren | compileSdk = 36 |
compileSdk.version.release.apiLevel: 36 |
| Mindest-SDK | minSdk = 24 in defaultConfig |
minSdk.version.release.apiLevel: 24 |
| Ziel-SDK | targetSdk = 36 in defaultConfig |
targetSdk.version.release.apiLevel: 36 |
| Anwendungs-ID | applicationId in defaultConfig |
applicationId |
| Versionscode | versionCode in defaultConfig |
versionCode |
| Name der Version | versionName in defaultConfig |
versionName |
| Release-Signatur | signingConfigs und signingConfig im Build-Typ release |
packaging.release.signing |
Abhängigkeiten
In Kotlin DSL deklarieren Sie Abhängigkeiten im Block dependencies mit Konfigurationen wie implementation:
dependencies {
implementation(project(":app-core"))
implementation("androidx.core:core-ktx:1.18.0")
}
In Lightbuild listen Sie Modulabhängigkeiten unter module und externe Bibliotheken unter maven auf:
android:
dependencies:
module:
- //app-core
maven:
- androidx.core:core-ktx:1.18.0
Kotlin DSL verwendet andere Konfigurationen wie api, compileOnly und runtimeOnly, um zu steuern, wie ein Modul eine Abhängigkeit verwendet:
dependencies {
api(project(":data"))
compileOnly("androidx.annotation:annotation:1.9.1")
}
In Lightbuild fügen Sie stattdessen die Einstellungen compile und runtime zur Abhängigkeit hinzu:
android:
dependencies:
module:
- //data:
compile: public
maven:
- androidx.annotation:annotation:1.9.1:
runtime: off
Weitere Informationen zu diesen Einstellungen finden Sie unter Abhängigkeitseinstellungen.
In der folgenden Tabelle werden gängige Abhängigkeitsdeklarationen verglichen:
| Abhängigkeit | Kotlin DSL | Lightbuild |
|---|---|---|
| Modul in Ihrem Projekt | implementation(project(":app-core")) |
//app-core in android.dependencies.module |
| Externe Bibliothek | implementation("group:artifact:version") |
group:artifact:version in android.dependencies.maven |
| API-Abhängigkeit | api("group:artifact:version") |
group:artifact:version in android.dependencies.maven, mit compile: public |
| Nur-Kompilierungs-Abhängigkeit | compileOnly("group:artifact:version") |
group:artifact:version in android.dependencies.maven, mit runtime: off |
| Nur-Laufzeit-Abhängigkeit | runtimeOnly("group:artifact:version") |
group:artifact:version in android.dependencies.maven, mit compile: off |
| KSP-Prozessor | ksp("group:artifact:version") |
group:artifact:version in android.kspProcessors.maven |
| Lokale Testabhängigkeit | testImplementation("group:artifact:version") |
group:artifact:version in android.tests.test.dependencies.maven |
| Abhängigkeit von instrumentierten Tests | androidTestImplementation("group:artifact:version") |
group:artifact:version in android.tests.androidTest.dependencies.maven |
KSP
In Kotlin DSL wenden Sie das KSP-Plug-in an und fügen Prozessoren mit der ksp-Konfiguration hinzu:
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 fügen Sie dem Block kspProcessors Prozessoren hinzu. Lightbuild wendet das KSP-Plug-in dann automatisch an:
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
Tests
In Kotlin DSL legen Sie den Instrumentierungstest-Runner in defaultConfig fest und fügen Testabhängigkeiten mit den Konfigurationen testImplementation und androidTestImplementation hinzu:
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 konfigurieren Sie lokale Tests in tests.test und Instrumentierungstests 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
Build-Befehle
Mit der Kotlin-DSL erstellen und testen Sie über die Befehlszeile, indem Sie Gradle-Aufgaben mit dem Gradle-Wrapper ausführen. Mit Lightbuild verwenden Sie die Lightbuild-Befehlszeile.
| Aufgabe | Gradle-Wrapper | Lightbuild-Befehlszeile |
|---|---|---|
| App-Modul erstellen | ./gradlew :app:assembleDebug |
lightbuild build app |
| Alle Ziele erstellen | ./gradlew assemble |
lightbuild build |
| Lokale Tests eines Moduls ausführen | ./gradlew :app-core:test |
lightbuild test app-core:hostTest |
| Instrumentierungstests eines Moduls ausführen | ./gradlew :app-core:connectedAndroidTest |
lightbuild test app-core:deviceTest |
| Alle Tests ausführen | ./gradlew test connectedAndroidTest |
lightbuild test |
| Build-Ausgabe und Caches entfernen | ./gradlew clean |
lightbuild clean |
Weitere Informationen finden Sie unter App über die Befehlszeile erstellen und Lightbuild-Projekte über die Befehlszeile erstellen.
Abhängigkeitssperre
Bei Kotlin DSL ist die Abhängigkeitssperre optional: Sie aktivieren sie in Ihren Build-Skripts und schreiben dann Sperrdateien, indem Sie einen Build mit dem Flag --write-locks ausführen. In Lightbuild hat jedes Modul eine resolved.deps-Datei, in der die aufgelösten Abhängigkeiten des Moduls aufgezeichnet werden. Diese Datei wird von Lightbuild automatisch generiert. Checken Sie Ihre resolved.deps-Dateien wie bei Gradle-Sperrdateien in die Versionsverwaltung ein.
Wenn Sie Ihre Abhängigkeiten sperren möchten, z. B. in einem CI-Build, fügen Sie das Flag --locked-dependencies zu lightbuild resolve oder lightbuild test hinzu. Mit diesem Flag schlägt der Befehl fehl, wenn eine resolved.deps-Datei nicht mit den Abhängigkeiten des Moduls übereinstimmt, anstatt die Datei zu aktualisieren:
lightbuild resolve --locked-dependencies
Nicht unterstützte Funktionen
Lightbuild unterstützt die folgenden Kotlin-DSL-Funktionen nicht:
- Versionskataloge und Konventions-Plug-ins
- Benutzerdefinierte Plug-ins
- Produktvarianten. Erstellen Sie stattdessen für jede Version Ihrer App ein separates App-Modul. Weitere Informationen finden Sie unter Mehrere App-Module.
- Kotlin Multiplatform-Module (KMP)
- Abhängigkeitsauflösung über einen Proxyserver
Außerdem können in einem Projekt nicht Kotlin-DSL- und Lightbuild-Module gemischt werden. Bekannte Probleme finden Sie in den Versionshinweisen zu Lightbuild.
Empfehlungen für Sie
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Referenz zur Lightbuild-Konfiguration
- Lightbuild-Projektstruktur
- Erste Schritte mit Lightbuild