Android derlemelerini Kotlin DSL ile yapılandırma konusunda deneyimliyseniz bu sayfada, yaygın Kotlin DSL yapılandırmalarının Lightbuild ile nasıl eşleştiği gösterilmektedir.
Bu sayfadaki örneklerde Kotlin DSL ve Android Gradle eklentisi (AGP) 9.0 veya sonraki sürümler kullanılmaktadır. Bu sürümlerde yerleşik Kotlin desteği bulunur.
Derleme dosyaları
Aşağıdaki tabloda, her Kotlin DSL derleme dosyasının Lightbuild eşdeğeri gösterilmektedir:
| Kotlin DSL | Lightbuild | Amaç |
|---|---|---|
settings.gradle.kts |
project.lightbuild.yaml |
Proje adı, modüller ve depolar |
build.gradle.kts ve gradle-wrapper.properties kökü |
project.lightbuild.yaml |
Derleme aracı ve araç zinciri sürümleri |
build.gradle.kts. modül |
lightbuild.yaml. modül |
Modül türü, Android ayarları, bağımlılıklar ve testler |
gradle.lockfile |
resolved.deps |
Bağımlılık sürümlerini izleme |
Proje ayarları
Kotlin DSL'de settings.gradle.kts dosyası, projenin adını, modüllerini ve bağımlılıkların çözümleneceği depoları tanımlar:
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
}
}
rootProject.name = "MyApp"
include(":app")
include(":app-core")
Lightbuild'de project.lightbuild.yaml dosyası aynı ayarları tanımlar:
project:
name: MyApp
modules:
- app
- app-core
repositories:
- google
- mavenCentral
Aşağıdaki tabloda proje genelindeki ayarlar karşılaştırılmaktadır:
| Konsept | Kotlin DSL | Lightbuild |
|---|---|---|
| Proje adı | rootProject.name |
project.name |
| Modüller | include(":app") |
modules |
| Kod depoları | dependencyResolutionManagement liginde repositories. sırada |
repositories |
| Özel Maven deposu | maven { url = uri("https://maven.example.com/releases") } |
maven, şununla: name ve url |
| Depo kimlik bilgileri | maven bloğunda credentials |
credentials, local.properties içinde tanımladığınız anahtarlarla |
| Derleme aracı sürümü | gradle-wrapper.properties içinde Gradle sürümü ve plugins bloğunda AGP sürümü |
lightbuild.version |
| Kotlin sürümü | AGP'de yerleşik olarak bulunur. Daha yeni bir sürüm kullanmak için kotlin-gradle-plugin öğesini buildscript sınıf yoluna ekleyin. |
build.kotlin.version |
| Java sürümü | kotlin { jvmToolchain(17) } |
build.java.version |
Modül türü ve eklentiler
Kotlin DSL'de, bir eklenti uygulayarak modülün türünü seçersiniz ve KSP gibi özellikler eklemek için diğer eklentileri uygularsınız. Lightbuild'de modülün type değerini ayarlarsınız ve Lightbuild, yapılandırmanızın ihtiyaç duyduğu özellikleri uygular:
| Konsept | Kotlin DSL | Lightbuild |
|---|---|---|
| Uygulama modülü | id("com.android.application") |
type: application |
| Kitaplık modülü | id("com.android.library") |
type: library |
| Kotlin Multiplatform (KMP) modülü | id("org.jetbrains.kotlin.multiplatform") |
Henüz desteklenmiyor |
| Kotlin | AGP 9.0 ve sonraki sürümlerde yerleşik olarak bulunur | Yerleşik |
| KSP | id("com.google.devtools.ksp") |
kspProcessors beyan ettiğinizde otomatik olarak uygulanır |
| Protokol Arabellekleri | id("com.google.protobuf") |
optionalFeatures liginde com.android.tools.lightbuild.protobuf. sırada |
| Sürüm katalogları | libs.versions.toml dosya |
Henüz desteklenmiyor |
| Diğer eklentiler | Gradle eklentisini uygulama | Henüz desteklenmiyor |
Android ayarları
Kotlin DSL'de, Android ayarlarını bir modülün build.gradle.kts dosyasındaki android bloğunda yapılandırırsınız:
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'de aynı ayarları bir modülün lightbuild.yaml dosyasının android bloğunda yapılandırırsınız:
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şağıdaki tabloda bu ayarlar karşılaştırılmaktadır:
| Ayar | Kotlin DSL | Lightbuild |
|---|---|---|
| Ad alanı | namespace |
namespace |
| Derleme SDK'sı | compileSdk = 36 |
compileSdk.version.release.apiLevel: 36 |
| Minimum SDK | defaultConfig liginde minSdk = 24. sırada |
minSdk.version.release.apiLevel: 24 |
| Hedef SDK | defaultConfig liginde targetSdk = 36. sırada |
targetSdk.version.release.apiLevel: 36 |
| Uygulama Kimliği | defaultConfig liginde applicationId. sırada |
applicationId |
| Sürüm kodu | defaultConfig liginde versionCode. sırada |
versionCode |
| Sürüm adı | defaultConfig liginde versionName. sırada |
versionName |
| Sürüm imzalama | signingConfigs ve release derleme türünde signingConfig |
packaging.release.signing |
Bağımlılıklar
Kotlin DSL'de bağımlılıkları dependencies bloğunda, implementation gibi yapılandırmaları kullanarak bildirirsiniz:
dependencies {
implementation(project(":app-core"))
implementation("androidx.core:core-ktx:1.18.0")
}
Lightbuild'de modül bağımlılıklarını module altında, harici kitaplıkları ise maven altında listelersiniz:
android:
dependencies:
module:
- //app-core
maven:
- androidx.core:core-ktx:1.18.0
Kotlin DSL, bir modülün bağımlılığı nasıl kullanacağını kontrol etmek için api, compileOnly ve runtimeOnly gibi diğer yapılandırmaları kullanır:
dependencies {
api(project(":data"))
compileOnly("androidx.annotation:annotation:1.9.1")
}
Lightbuild'de ise bağımlılığa compile ve runtime ayarlarını eklersiniz:
android:
dependencies:
module:
- //data:
compile: public
maven:
- androidx.annotation:annotation:1.9.1:
runtime: off
Bu ayarlar hakkında daha fazla bilgi için Bağımlılık ayarları başlıklı makaleyi inceleyin.
Aşağıdaki tabloda, yaygın bağımlılık bildirimleri karşılaştırılmaktadır:
| Bağımlılık | Kotlin DSL | Lightbuild |
|---|---|---|
| Projenizdeki modül | implementation(project(":app-core")) |
android.dependencies.module liginde //app-core. sırada |
| Harici kitaplık | implementation("group:artifact:version") |
android.dependencies.maven liginde group:artifact:version. sırada |
| API bağımlılığı | api("group:artifact:version") |
android.dependencies.maven içinde group:artifact:version, compile: public ile |
| Yalnızca derleme bağımlılığı | compileOnly("group:artifact:version") |
android.dependencies.maven içinde group:artifact:version, runtime: off ile |
| Yalnızca çalışma zamanı bağımlılığı | runtimeOnly("group:artifact:version") |
android.dependencies.maven içinde group:artifact:version, compile: off ile |
| KSP işlemcisi | ksp("group:artifact:version") |
android.kspProcessors.maven liginde group:artifact:version. sırada |
| Yerel test bağımlılığı | testImplementation("group:artifact:version") |
android.tests.test.dependencies.maven liginde group:artifact:version. sırada |
| Araçlı test bağımlılığı | androidTestImplementation("group:artifact:version") |
android.tests.androidTest.dependencies.maven liginde group:artifact:version. sırada |
KSP
Kotlin DSL'de KSP eklentisini uygular ve ksp yapılandırmasıyla işlemciler eklersiniz:
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'de, kspProcessors bloğuna işlemciler eklersiniz ve Lightbuild, KSP eklentisini otomatik olarak uygular:
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
Testler
Kotlin DSL'de, enstrümantasyon testi çalıştırıcısını defaultConfig içinde ayarlarsınız ve test bağımlılıklarını testImplementation ve androidTestImplementation yapılandırmalarıyla eklersiniz:
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'de yerel testleri tests.test, enstrümantasyon testlerini ise tests.androidTest dosyasında yapılandırırsınız:
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
Komut oluşturma
Kotlin DSL ile Gradle sarmalayıcıyla Gradle görevlerini çalıştırarak komut satırından derleme ve test yapabilirsiniz. Lightbuild ile Lightbuild CLI'yı kullanırsınız.
| Görev | Gradle sarmalayıcısı | Lightbuild CLI |
|---|---|---|
| Uygulama modülünü oluşturma | ./gradlew :app:assembleDebug |
lightbuild build app |
| Tüm hedefleri derleme | ./gradlew assemble |
lightbuild build |
| Modülün yerel testlerini çalıştırma | ./gradlew :app-core:test |
lightbuild test app-core:hostTest |
| Modülün araçlı testlerini çalıştırma | ./gradlew :app-core:connectedAndroidTest |
lightbuild test app-core:deviceTest |
| Tüm testleri çalıştır | ./gradlew test connectedAndroidTest |
lightbuild test |
| Derleme çıkışını ve önbellekleri kaldırma | ./gradlew clean |
lightbuild clean |
Daha fazla bilgi için Uygulamanızı komut satırından derleme ve Lightbuild projelerini komut satırından derleme başlıklı makaleleri inceleyin.
Bağımlılık kilitleme
Kotlin DSL ile bağımlılık kilitleme isteğe bağlıdır:
Derleme komut dosyalarınızda bu özelliği etkinleştirir, ardından --write-locks işaretiyle bir derleme çalıştırarak kilit dosyaları yazarsınız. Lightbuild'de her modülün, modülün çözümlenmiş bağımlılıklarını kaydeden bir resolved.deps dosyası vardır. Bu dosya Lightbuild tarafından otomatik olarak oluşturulur. Gradle kilit dosyalarında olduğu gibi resolved.deps dosyalarınızı sürüm denetimine ekleyin.
Bağımlılıklarınızı kilitlemek için (ör. bir CI derlemesinde) lightbuild resolve veya lightbuild test komutuna --locked-dependencies işaretini ekleyin. Bu işaretle, bir resolved.deps dosyası modülün bağımlılıklarıyla eşleşmiyorsa komut, dosyayı güncellemek yerine başarısız olur:
lightbuild resolve --locked-dependencies
Desteklenmeyen özellikler
Lightbuild, aşağıdaki Kotlin DSL özelliklerini desteklemez:
- Sürüm katalogları ve kural eklentileri
- Özel eklentiler
- Ürün türleri. Bunun yerine, uygulamanızın her sürümü için ayrı bir uygulama modülü oluşturun. Daha fazla bilgi için Birden fazla uygulama modülü bölümüne bakın.
- Kotlin Multiplatform (KMP) modülleri
- Proxy sunucu üzerinden bağımlılık çözümü
Ayrıca bir projede Kotlin DSL ve Lightbuild modülleri birlikte kullanılamaz. Bilinen sorunlar için Lightbuild sürüm notlarını inceleyin.
Sizin için önerilenler
- Not: JavaScript devre dışı bırakıldığında bağlantı metni gösterilir.
- Lightbuild yapılandırma referansı
- Lightbuild proje yapısı
- Lightbuild'i kullanmaya başlama