Si conoces la configuración de compilaciones de Android con el DSL de Kotlin, en esta página se muestra cómo se asignan las configuraciones comunes del DSL de Kotlin a Lightbuild.
En los ejemplos de esta página, se usan el DSL de Kotlin y el complemento de Android para Gradle (AGP) 9.0 o una versión posterior, que incluye compatibilidad integrada con Kotlin.
Archivos de compilación
En la siguiente tabla, se muestra el equivalente de Lightbuild de cada archivo de compilación de DSL de Kotlin:
| DSL de Kotlin | Lightbuild | Objetivo |
|---|---|---|
settings.gradle.kts |
project.lightbuild.yaml |
Nombre del proyecto, módulos y repositorios |
Raíz build.gradle.kts y gradle-wrapper.properties |
project.lightbuild.yaml |
Versiones de la herramienta de compilación y de la cadena de herramientas |
Módulo build.gradle.kts |
Módulo lightbuild.yaml |
Tipo de módulo, configuración de Android, dependencias y pruebas |
gradle.lockfile |
resolved.deps |
Cómo hacer un seguimiento de las versiones de las dependencias |
Configuración del proyecto
En el DSL de Kotlin, el archivo settings.gradle.kts define el nombre del proyecto, sus módulos y los repositorios de los que se resolverán las dependencias:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
rootProject.name = "MyApp"
include(":app")
include(":app-core")
En Lightbuild, el archivo project.lightbuild.yaml define la misma configuración:
project:
name: MyApp
modules:
- app
- app-core
repositories:
- google
- mavenCentral
En la siguiente tabla, se comparan los parámetros de configuración de todo el proyecto:
| Concepto | DSL de Kotlin | Lightbuild |
|---|---|---|
| Nombre del proyecto | rootProject.name |
project.name |
| Módulos | include(":app") |
modules |
| Repositorios | repositories en dependencyResolutionManagement |
repositories |
| Repositorio de Maven personalizado | maven { url = uri("https://maven.example.com/releases") } |
maven con name y url |
| Credenciales del repositorio | credentials en el bloque maven |
credentials con las claves que definas en local.properties |
| Versión de la herramienta de compilación | La versión de Gradle en gradle-wrapper.properties y la versión del AGP en el bloque plugins |
lightbuild.version |
| Versión de Kotlin | Está integrado en el AGP. Para usar una versión más reciente, agrega kotlin-gradle-plugin a la ruta de clase de buildscript. |
build.kotlin.version |
| Versión de Java | kotlin { jvmToolchain(17) } |
build.java.version |
Tipo de módulo y complementos
En el DSL de Kotlin, eliges el tipo de módulo aplicando un complemento y aplicas otros complementos para agregar funciones, como KSP. En Lightbuild, estableces el type del módulo y Lightbuild aplica las funciones que necesita tu configuración:
| Concepto | DSL de Kotlin | Lightbuild |
|---|---|---|
| Módulo de la app | id("com.android.application") |
type: application |
| Módulo de biblioteca | id("com.android.library") |
type: library |
| Módulo de Kotlin Multiplatform (KMP) | id("org.jetbrains.kotlin.multiplatform") |
Aún no se admite |
| Kotlin | Integrado en AGP 9.0 y versiones posteriores | Integrada |
| argumento de venta clave | id("com.google.devtools.ksp") |
Se aplica automáticamente cuando declaras kspProcessors |
| Búferes de protocolo | id("com.google.protobuf") |
com.android.tools.lightbuild.protobuf en optionalFeatures |
| Catálogos de versiones | libs.versions.toml archivo |
Aún no se admite |
| Otros complementos | Aplica el complemento de Gradle | Aún no se admite |
Configuración de Android
En el DSL de Kotlin, estableces la configuración de Android en el bloque android del archivo build.gradle.kts de un módulo:
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"
}
}
En Lightbuild, estableces los mismos parámetros de configuración en el bloque android del archivo lightbuild.yaml de un módulo:
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"
En la siguiente tabla, se comparan estos parámetros de configuración:
| Configuración | DSL de Kotlin | Lightbuild |
|---|---|---|
| Espacio de nombres | namespace |
namespace |
| Compile SDK | compileSdk = 36 |
compileSdk.version.release.apiLevel: 36 |
| SDK mínimo | minSdk = 24 en defaultConfig |
minSdk.version.release.apiLevel: 24 |
| SDK de destino | targetSdk = 36 en defaultConfig |
targetSdk.version.release.apiLevel: 36 |
| ID de aplicación | applicationId en defaultConfig |
applicationId |
| Código de versión | versionCode en defaultConfig |
versionCode |
| Nombre de la versión | versionName en defaultConfig |
versionName |
| Firma de versiones | signingConfigs y signingConfig en el tipo de compilación release |
packaging.release.signing |
Dependencias
En el DSL de Kotlin, declaras dependencias en el bloque dependencies con parámetros de configuración como implementation:
dependencies {
implementation(project(":app-core"))
implementation("androidx.core:core-ktx:1.18.0")
}
En Lightbuild, las dependencias de módulos se enumeran en module y las bibliotecas externas, en maven:
android:
dependencies:
module:
- //app-core
maven:
- androidx.core:core-ktx:1.18.0
El DSL de Kotlin usa otras configuraciones, como api, compileOnly y runtimeOnly, para controlar cómo un módulo usa una dependencia:
dependencies {
api(project(":data"))
compileOnly("androidx.annotation:annotation:1.9.1")
}
En Lightbuild, en su lugar, agregas los parámetros de configuración compile y runtime a la dependencia:
android:
dependencies:
module:
- //data:
compile: public
maven:
- androidx.annotation:annotation:1.9.1:
runtime: off
Para obtener más información sobre estos parámetros de configuración, consulta Configuración de dependencias.
En la siguiente tabla, se comparan las declaraciones de dependencia comunes:
| Dependencia | DSL de Kotlin | Lightbuild |
|---|---|---|
| Módulo en tu proyecto | implementation(project(":app-core")) |
//app-core en android.dependencies.module |
| Biblioteca externa | implementation("group:artifact:version") |
group:artifact:version en android.dependencies.maven |
| Dependencia de la API | api("group:artifact:version") |
group:artifact:version en android.dependencies.maven, con compile: public |
| Dependencia de solo compilación | compileOnly("group:artifact:version") |
group:artifact:version en android.dependencies.maven, con runtime: off |
| Dependencia solo de entorno de ejecución | runtimeOnly("group:artifact:version") |
group:artifact:version en android.dependencies.maven, con compile: off |
| Procesador de KSP | ksp("group:artifact:version") |
group:artifact:version en android.kspProcessors.maven |
| Dependencia de prueba local | testImplementation("group:artifact:version") |
group:artifact:version en android.tests.test.dependencies.maven |
| Dependencia de prueba instrumentada | androidTestImplementation("group:artifact:version") |
group:artifact:version en android.tests.androidTest.dependencies.maven |
argumento de venta clave
En el DSL de Kotlin, aplicas el complemento de KSP y agregas procesadores con la configuración 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")
}
En Lightbuild, agregas procesadores al bloque kspProcessors, y Lightbuild aplica el complemento de KSP automáticamente:
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
Pruebas
En el DSL de Kotlin, configuras el ejecutor de pruebas de instrumentación en defaultConfig y agregas dependencias de prueba con las configuraciones testImplementation y 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")
}
En Lightbuild, configuras las pruebas locales en tests.test y las pruebas de instrumentación
en 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
Comandos de compilación
Con el DSL de Kotlin, compilas y pruebas desde la línea de comandos ejecutando tareas de Gradle con el wrapper de Gradle. Con Lightbuild, usas la CLI de Lightbuild.
| Tarea | Wrapper de Gradle | CLI de Lightbuild |
|---|---|---|
| Cómo compilar el módulo de la app | ./gradlew :app:assembleDebug |
lightbuild build app |
| Compila todos los destinos | ./gradlew assemble |
lightbuild build |
| Cómo ejecutar las pruebas locales de un módulo | ./gradlew :app-core:test |
lightbuild test app-core:hostTest |
| Cómo ejecutar las pruebas instrumentadas de un módulo | ./gradlew :app-core:connectedAndroidTest |
lightbuild test app-core:deviceTest |
| Ejecuta todas las pruebas | ./gradlew test connectedAndroidTest |
lightbuild test |
| Quita el resultado de la compilación y las cachés | ./gradlew clean |
lightbuild clean |
Para obtener más información, consulta Cómo compilar tu app desde la línea de comandos y Cómo compilar proyectos de Lightbuild desde la línea de comandos.
Bloqueo de dependencias
Con el DSL de Kotlin, el bloqueo de dependencias es opcional:
lo activas en tus secuencias de comandos de compilación y, luego, escribes archivos de bloqueo ejecutando una
compilación con la marca --write-locks. En Lightbuild, cada módulo tiene un archivo resolved.deps que registra las dependencias resueltas del módulo, que Lightbuild genera automáticamente. Al igual que con los archivos de bloqueo de Gradle, registra tus archivos resolved.deps en el control de versiones.
Para bloquear tus dependencias, por ejemplo, en una compilación de CI, agrega la
marca --locked-dependencies a lightbuild resolve o lightbuild test. Con
esta marca, el comando falla si un archivo resolved.deps no coincide con las
dependencias del módulo, en lugar de actualizar el archivo:
lightbuild resolve --locked-dependencies
Características no compatibles
Lightbuild no admite las siguientes funciones de DSL de Kotlin:
- Catálogos de versiones y complementos de convenciones
- Complementos personalizados
- Variantes de productos En su lugar, crea un módulo de app independiente para cada versión de tu app. Para obtener más información, consulta Varios módulos de app.
- Módulos de Kotlin Multiplatform (KMP)
- Resolución de dependencias a través de un servidor proxy
Además, un proyecto no puede mezclar módulos de DSL de Kotlin y Lightbuild. Para conocer los problemas conocidos, consulta las notas de la versión de Lightbuild.
Recomendaciones para ti
- Nota: El texto del vínculo se muestra cuando JavaScript está desactivado
- Referencia de configuración de Lightbuild
- Estructura del proyecto de Lightbuild
- Comienza a usar Lightbuild