اگر با پیکربندی ساختهای Android با Kotlin DSL آشنا هستید، این صفحه نشان میدهد که پیکربندیهای رایج Kotlin DSL چگونه به Lightbuild نگاشت میشوند.
نمونههای این صفحه از Kotlin DSL و افزونه Android Gradle (AGP) نسخه ۹.۰ یا بالاتر استفاده میکنند که شامل پشتیبانی داخلی 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 |
| نسخه جاوا | 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") |
هنوز پشتیبانی نمیشود |
| کاتلین | در AGP نسخه ۹.۰ و بالاتر تعبیه شده است | ساختهشده در |
| 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 |
| کیت توسعه نرمافزار کامپایل | compileSdk = 36 |
compileSdk.version.release.apiLevel: 36 |
| حداقل کیت توسعه نرمافزار | 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("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 | 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 دارد که وابستگیهای حلشده پیمانه را ثبت میکند، که
Lightbuild بهطور خودکار تولید میکند. همانند فایلهای قفل 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 را ببینید.
توصیهشده برای شما
- توجه: وقتی جاوا اسکریپت خاموش باشد، نوشتار پیوند نمایش داده میشود
- مرجع پیکربندی Lightbuild
- ساختار پروژه Lightbuild
- شروع به کار با Lightbuild