Если вы умеете настраивать сборки Android с помощью Kotlin DSL, на этой странице вы узнаете, как сопоставить распространенные конфигурации Kotlin DSL с Lightbuild.
В примерах на этой странице используется Kotlin DSL и плагин Android Gradle (AGP) версии 9.0 или выше, который включает встроенную поддержку Kotlin.
Файлы сборки
В таблице ниже показаны эквиваленты Lightbuild для каждого файла сборки Kotlin DSL.
| Kotlin DSL | Lightbuild | Назначение |
|---|---|---|
settings.gradle.kts |
project.lightbuild.yaml |
Название проекта, модули и хранилища |
Корневые сертификаты build.gradle.kts и gradle-wrapper.properties |
project.lightbuild.yaml |
Версии инструментов сборки и тулчейна |
Модуль build.gradle.kts |
Модуль lightbuild.yaml |
Тип модуля, настройки Android, зависимости и тесты |
gradle.lockfile |
resolved.deps |
Отслеживание версий зависимостей |
Настройки проекта
В Kotlin DSL файл settings.gradle.kts определяет название проекта, его модули и хранилища для разрешения зависимостей:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
rootProject.name = "MyApp"
include(":app")
include(":app-core")
В Lightbuild те же настройки задаются в файле project.lightbuild.yaml:
project:
name: MyApp
modules:
- app
- app-core
repositories:
- google
- mavenCentral
В таблице ниже сравниваются настройки на уровне проекта.
| Концепция | Kotlin DSL | Lightbuild |
|---|---|---|
| Название проекта | rootProject.name |
project.name |
| Модули | include(":app") |
modules |
| Хранилища | repositories (dependencyResolutionManagement) |
repositories |
| Собственный репозиторий Maven | maven { url = uri("https://maven.example.com/releases") } |
maven с name и url |
| Учетные данные репозитория | credentials в блоке maven |
credentials с ключами, которые вы определяете в local.properties |
| Версия инструмента сборки | Версия Gradle в gradle-wrapper.properties и версия AGP в блоке plugins. |
lightbuild.version |
| Версия Kotlin | Встроен в AGP. Чтобы использовать более новую версию, добавьте kotlin-gradle-plugin в путь к классу buildscript. |
build.kotlin.version |
| Версия Java | kotlin { jvmToolchain(17) } |
build.java.version |
Тип модуля и плагины
В Kotlin DSL вы выбираете тип модуля, применяя плагин, и применяете другие плагины, чтобы добавить такие функции, как KSP. В Lightbuild вы задаете type модуля, и Lightbuild применяет функции, необходимые для вашей конфигурации:
| Концепция | Kotlin DSL | Lightbuild |
|---|---|---|
| Модуль приложения | id("com.android.application") |
type: application |
| Модуль "Библиотека" | id("com.android.library") |
type: library |
| Модуль Kotlin Multiplatform (KMP) | id("org.jetbrains.kotlin.multiplatform") |
Функция пока недоступна |
| Kotlin | Встроен в AGP 9.0 и более поздние версии | Встроенные |
| KSP | id("com.google.devtools.ksp") |
Применяется автоматически, если вы указываете kspProcessors |
| Буферы протоколов | id("com.google.protobuf") |
com.android.tools.lightbuild.protobuf (optionalFeatures) |
| Каталоги версий | libs.versions.toml файл |
Функция пока недоступна |
| Другие плагины | Примените плагин Gradle | Функция пока недоступна |
Настройки Android
В Kotlin DSL настройки Android задаются в блоке android файла build.gradle.kts модуля:
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"
}
}
В Lightbuild те же настройки задаются в блоке android файла lightbuild.yaml модуля:
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"
В таблице ниже сравниваются эти настройки.
| Параметр | Kotlin DSL | Lightbuild |
|---|---|---|
| Пространство имен | namespace |
namespace |
| Компиляция SDK | compileSdk = 36 |
compileSdk.version.release.apiLevel: 36 |
| Минимальная версия SDK | minSdk = 24 (defaultConfig) |
minSdk.version.release.apiLevel: 24 |
| Целевой SDK | targetSdk = 36 (defaultConfig) |
targetSdk.version.release.apiLevel: 36 |
| Идентификатор приложения | applicationId (defaultConfig) |
applicationId |
| Код версии | versionCode (defaultConfig) |
versionCode |
| Название версии | versionName (defaultConfig) |
versionName |
| Подписание релиза | signingConfigs и signingConfig в типе сборки release |
packaging.release.signing |
Связанные запросы
В Kotlin DSL зависимости объявляются в блоке dependencies с помощью таких конфигураций, как implementation:
dependencies {
implementation(project(":app-core"))
implementation("androidx.core:core-ktx:1.18.0")
}
В Lightbuild зависимости модулей указываются в разделе module, а внешние библиотеки – в разделе maven:
android:
dependencies:
module:
- //app-core
maven:
- androidx.core:core-ktx:1.18.0
Kotlin DSL использует другие конфигурации, такие как api, compileOnly и runtimeOnly, чтобы контролировать, как модуль использует зависимость:
dependencies {
api(project(":data"))
compileOnly("androidx.annotation:annotation:1.9.1")
}
В Lightbuild вы добавляете в зависимость настройки compile и runtime:
android:
dependencies:
module:
- //data:
compile: public
maven:
- androidx.annotation:annotation:1.9.1:
runtime: off
Подробнее о настройках зависимостей…
В таблице ниже сравниваются распространенные объявления зависимостей.
| Зависимость | Kotlin DSL | Lightbuild |
|---|---|---|
| Модуль в вашем проекте | implementation(project(":app-core")) |
//app-core (android.dependencies.module) |
| Внешняя библиотека | implementation("group:artifact:version") |
group:artifact:version (android.dependencies.maven) |
| Зависимость API | api("group:artifact:version") |
group:artifact:version в android.dependencies.maven, с compile: public |
| Зависимость только для компиляции | compileOnly("group:artifact:version") |
group:artifact:version в android.dependencies.maven, с runtime: off |
| Зависимость только от среды выполнения | runtimeOnly("group:artifact:version") |
group:artifact:version в android.dependencies.maven, с compile: off |
| Процессор KSP | ksp("group:artifact:version") |
group:artifact:version (android.kspProcessors.maven) |
| Зависимость локального теста | testImplementation("group:artifact:version") |
group:artifact:version (android.tests.test.dependencies.maven) |
| Зависимость инструментального теста | androidTestImplementation("group:artifact:version") |
group:artifact:version (android.tests.androidTest.dependencies.maven) |
KSP
В Kotlin DSL вы применяете плагин KSP и добавляете процессоры с конфигурацией 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")
}
В Lightbuild вы добавляете процессоры в блок kspProcessors, а Lightbuild автоматически применяет плагин 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
Тесты
В Kotlin DSL вы задаете средство запуска инструментальных тестов в defaultConfig и добавляете тестовые зависимости с помощью конфигураций testImplementation и 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")
}
В Lightbuild локальные тесты настраиваются в tests.test, а инструментальные тесты – в 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
Команды для сборки
При использовании Kotlin DSL сборка и тестирование выполняются из командной строки путем запуска задач Gradle с помощью оболочки Gradle. В Lightbuild используется Lightbuild CLI.
| Задача | Gradle Wrapper | Lightbuild CLI |
|---|---|---|
| Создайте модуль приложения | ./gradlew :app:assembleDebug |
lightbuild build app |
| Создать все цели | ./gradlew assemble |
lightbuild build |
| Как запустить локальные тесты модуля | ./gradlew :app-core:test |
lightbuild test app-core:hostTest |
| Как запустить инструментальные тесты модуля | ./gradlew :app-core:connectedAndroidTest |
lightbuild test app-core:deviceTest |
| Запустить все тесты | ./gradlew test connectedAndroidTest |
lightbuild test |
| Удалите выходные данные сборки и кеш | ./gradlew clean |
lightbuild clean |
Подробнее о том, как создать приложение из командной строки и как создать проект Lightbuild из командной строки…
Блокировка зависимостей
При использовании Kotlin DSL блокировка зависимостей необязательна. Ее можно включить в скриптах сборки, а затем создать файлы блокировки, запустив сборку с флагом --write-locks. В Lightbuild у каждого модуля есть файл resolved.deps, в котором записаны разрешенные зависимости модуля. Этот файл генерируется автоматически. Как и в случае с файлами блокировки Gradle, добавьте файлы resolved.deps в систему управления версиями.
Чтобы заблокировать зависимости, например в сборке CI, добавьте флаг --locked-dependencies в lightbuild resolve или lightbuild test. Если файл resolved.deps не соответствует зависимостям модуля, команда не обновляет файл, а возвращает ошибку.
lightbuild resolve --locked-dependencies
Неподдерживаемые функции
Lightbuild не поддерживает следующие функции Kotlin DSL:
- Каталоги версий и плагины соглашений
- Собственные плагины
- Версии продукта. Вместо этого создайте отдельный модуль для каждой версии приложения. Подробнее о нескольких модулях приложения…
- Модули Kotlin Multiplatform (KMP)
- Разрешение зависимостей через прокси-сервер
Кроме того, в проекте нельзя использовать одновременно модули Kotlin DSL и Lightbuild. Известные проблемы описаны в примечаниях к выпуску Lightbuild.
Рекомендуем
- Примечание. Текст ссылки показывается, когда JavaScript отключен.
- Справочник по конфигурации Lightbuild
- Структура проекта Lightbuild
- Начало работы с Lightbuild