Lightbuild ile Kotlin DSL'yi karşılaştırma

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.