Se você já sabe como configurar builds do Android com a DSL do Kotlin, esta página mostra como as configurações comuns da DSL do Kotlin são mapeadas para o Lightbuild.
Os exemplos nesta página usam a DSL do Kotlin e o Plug-in do Android para Gradle (AGP) 9.0 ou mais recente, que inclui suporte integrado ao Kotlin.
Arquivos de build
A tabela a seguir mostra o equivalente do Lightbuild de cada arquivo de build da DSL do Kotlin:
| DSL do Kotlin | Lightbuild | Finalidade |
|---|---|---|
settings.gradle.kts |
project.lightbuild.yaml |
Nome do projeto, módulos e repositórios |
Raiz build.gradle.kts e gradle-wrapper.properties |
project.lightbuild.yaml |
Versões da ferramenta de build e do conjunto de ferramentas |
Módulo build.gradle.kts |
Módulo lightbuild.yaml |
Tipo de módulo, configurações do Android, dependências e testes |
gradle.lockfile |
resolved.deps |
Rastrear versões de dependência |
Configurações do projeto
Na DSL do Kotlin, o arquivo settings.gradle.kts define o nome do projeto, os
módulos e os repositórios para resolver as dependências:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
rootProject.name = "MyApp"
include(":app")
include(":app-core")
No Lightbuild, o arquivo project.lightbuild.yaml define as mesmas configurações:
project:
name: MyApp
modules:
- app
- app-core
repositories:
- google
- mavenCentral
A tabela a seguir compara as configurações de todo o projeto:
| Conceito | DSL do Kotlin | Lightbuild |
|---|---|---|
| Nome do projeto | rootProject.name |
project.name |
| Módulos | include(":app") |
modules |
| Repositórios | repositories em dependencyResolutionManagement |
repositories |
| Repositório Maven personalizado | maven { url = uri("https://maven.example.com/releases") } |
maven com name e url |
| Credenciais do repositório | credentials no bloco maven |
credentials com chaves que você define em local.properties |
| Versão da ferramenta de build | Versão do Gradle em gradle-wrapper.properties e versão do AGP no bloco plugins |
lightbuild.version |
| Versão do Kotlin | Integrado ao AGP. Para usar uma versão mais recente, adicione kotlin-gradle-plugin ao caminho de classe buildscript. |
build.kotlin.version |
| Versão do Java | kotlin { jvmToolchain(17) } |
build.java.version |
Tipo de módulo e plug-ins
Na DSL do Kotlin, você escolhe o tipo de um módulo aplicando um plug-in e aplica
outros plug-ins para adicionar recursos como o KSP. No Lightbuild, você define o type do módulo, e o Lightbuild aplica os recursos necessários para sua configuração:
| Conceito | DSL do Kotlin | Lightbuild |
|---|---|---|
| Módulo do app | id("com.android.application") |
type: application |
| Módulo de biblioteca | id("com.android.library") |
type: library |
| Módulo do Kotlin Multiplatform (KMP) | id("org.jetbrains.kotlin.multiplatform") |
Não compatível no momento |
| Kotlin | Integrado ao AGP 9.0 e versões mais recentes | Integrado |
| KSP | id("com.google.devtools.ksp") |
Aplicado automaticamente quando você declara kspProcessors |
| Buffers de protocolos | id("com.google.protobuf") |
com.android.tools.lightbuild.protobuf em optionalFeatures |
| Catálogos de versões | libs.versions.toml arquivo |
Não compatível no momento |
| Outros plug-ins | Aplicar o plug-in do Gradle | Não compatível no momento |
Configurações do Android
Na DSL do Kotlin, as configurações do Android são definidas no bloco android do arquivo build.gradle.kts de um 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"
}
}
No Lightbuild, você define as mesmas configurações no bloco android do arquivo lightbuild.yaml de um 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"
A tabela a seguir compara essas configurações:
| Configuração | DSL do Kotlin | Lightbuild |
|---|---|---|
| Namespace | namespace |
namespace |
| SDK de compilação | compileSdk = 36 |
compileSdk.version.release.apiLevel: 36 |
| SDK mínimo | minSdk = 24 em defaultConfig |
minSdk.version.release.apiLevel: 24 |
| SDK de destino | targetSdk = 36 em defaultConfig |
targetSdk.version.release.apiLevel: 36 |
| ID do aplicativo | applicationId em defaultConfig |
applicationId |
| Código da versão | versionCode em defaultConfig |
versionCode |
| Nome da versão | versionName em defaultConfig |
versionName |
| Assinatura de versões | signingConfigs e signingConfig no tipo de build release |
packaging.release.signing |
Dependências
Na DSL do Kotlin, declare as dependências no bloco dependencies usando
configurações como implementation:
dependencies {
implementation(project(":app-core"))
implementation("androidx.core:core-ktx:1.18.0")
}
No Lightbuild, você lista as dependências do módulo em module e as bibliotecas externas em maven:
android:
dependencies:
module:
- //app-core
maven:
- androidx.core:core-ktx:1.18.0
A DSL do Kotlin usa outras configurações, como api, compileOnly e
runtimeOnly, para controlar como um módulo usa uma dependência:
dependencies {
api(project(":data"))
compileOnly("androidx.annotation:annotation:1.9.1")
}
No Lightbuild, adicione as configurações compile e runtime à dependência:
android:
dependencies:
module:
- //data:
compile: public
maven:
- androidx.annotation:annotation:1.9.1:
runtime: off
Para mais informações sobre essas configurações, consulte Configurações de dependência.
A tabela a seguir compara as declarações de dependência comuns:
| Dependência | DSL do Kotlin | Lightbuild |
|---|---|---|
| Módulo no seu projeto | implementation(project(":app-core")) |
//app-core em android.dependencies.module |
| Biblioteca externa | implementation("group:artifact:version") |
group:artifact:version em android.dependencies.maven |
| Dependência de API | api("group:artifact:version") |
group:artifact:version em android.dependencies.maven, com compile: public |
| Dependência somente de compilação | compileOnly("group:artifact:version") |
group:artifact:version em android.dependencies.maven, com runtime: off |
| Dependência somente de ambiente de execução | runtimeOnly("group:artifact:version") |
group:artifact:version em android.dependencies.maven, com compile: off |
| Processador KSP | ksp("group:artifact:version") |
group:artifact:version em android.kspProcessors.maven |
| Dependência de teste local | testImplementation("group:artifact:version") |
group:artifact:version em android.tests.test.dependencies.maven |
| Dependência de teste instrumentado | androidTestImplementation("group:artifact:version") |
group:artifact:version em android.tests.androidTest.dependencies.maven |
KSP
Na DSL do Kotlin, aplique o plug-in do KSP e adicione processadores com a configuração
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")
}
No Lightbuild, você adiciona processadores ao bloco kspProcessors, e o Lightbuild
aplica o plug-in do KSP automaticamente:
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
Testes
Na DSL do Kotlin, defina o executor de teste de instrumentação em defaultConfig e
adicione dependências de teste com as configurações 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")
}
No Lightbuild, você configura testes locais em tests.test e testes de instrumentação
em 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 build
Com a DSL do Kotlin, você cria e testa na linha de comando executando tarefas do Gradle com o wrapper do Gradle. Com o Lightbuild, você usa a CLI do Lightbuild.
| Tarefa | Wrapper do Gradle | CLI do Lightbuild |
|---|---|---|
| Criar o módulo do app | ./gradlew :app:assembleDebug |
lightbuild build app |
| Criar todos os destinos | ./gradlew assemble |
lightbuild build |
| Executar os testes locais de um módulo | ./gradlew :app-core:test |
lightbuild test app-core:hostTest |
| Executar os testes instrumentados de um módulo | ./gradlew :app-core:connectedAndroidTest |
lightbuild test app-core:deviceTest |
| Executar todos os testes | ./gradlew test connectedAndroidTest |
lightbuild test |
| Remover saída de build e caches | ./gradlew clean |
lightbuild clean |
Para mais informações, consulte Criar o app na linha de comando e Criar projetos do Lightbuild na linha de comando.
Bloqueio de dependências
Com a DSL do Kotlin, o bloqueio de dependências é opcional:
você o ativa nos scripts de build e, em seguida, grava arquivos de bloqueio executando um
build com a flag --write-locks. No Lightbuild, cada módulo tem um arquivo
resolved.deps que registra as dependências resolvidas do módulo, que
o Lightbuild gera automaticamente. Assim como nos arquivos de bloqueio do Gradle, faça check-in dos
arquivos resolved.deps no controle de versões.
Para bloquear as dependências, por exemplo, em um build de CI, adicione a
flag --locked-dependencies a lightbuild resolve ou lightbuild test. Com
essa flag, o comando falhará se um arquivo resolved.deps não corresponder às
dependências do módulo, em vez de atualizar o arquivo:
lightbuild resolve --locked-dependencies
Recursos não suportados
O Lightbuild não oferece suporte aos seguintes recursos da DSL do Kotlin:
- Catálogos de versões e plug-ins de convenção
- Plug-ins personalizados
- Variações de produtos. Em vez disso, crie um módulo de app separado para cada versão do seu app. Para mais informações, consulte Vários módulos de app.
- Módulos do Kotlin Multiplatform (KMP)
- Resolução de dependências por um servidor proxy
Além disso, um projeto não pode misturar módulos da DSL do Kotlin e do Lightbuild. Para problemas conhecidos, consulte as notas da versão do Lightbuild.
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Referência de configuração do Lightbuild
- Estrutura do projeto do Lightbuild
- Começar a usar o Lightbuild