אם אתם יודעים איך להגדיר גרסאות build של Android באמצעות Kotlin DSL, בדף הזה מוסבר איך להמיר הגדרות נפוצות של Kotlin DSL ל-Lightbuild.
הדוגמאות בדף הזה משתמשות ב-Kotlin DSL ובפלאגין של Android Gradle (AGP) מגרסה 9.0 ואילך, שכולל תמיכה מובנית ב-Kotlin.
קבצי build
בטבלה הבאה מוצג קובץ ה-build המקביל ב-Lightbuild לכל קובץ build ב-Kotlin DSL:
| Kotlin DSL | Lightbuild | מטרה |
|---|---|---|
settings.gradle.kts |
project.lightbuild.yaml |
שם הפרויקט, המודולים והמאגרים |
שורש build.gradle.kts ו-gradle-wrapper.properties |
project.lightbuild.yaml |
גרסאות של כלי פיתוח ו-toolchain |
מודול 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 |
| גרסת כלי ה-build | גרסת 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 |
| Compile 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 בסוג ה-build 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 |
| תלות מסוג Compile-only | 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
פקודות build
ב-Kotlin DSL, אתם יוצרים ובודקים משורת הפקודה על ידי הפעלת משימות Gradle באמצעות Gradle wrapper. ב-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 |
| הסרת פלט ה-build והמטמונים | ./gradlew clean |
lightbuild clean |
מידע נוסף זמין במאמרים פיתוח האפליקציה משורת הפקודה ופיתוח פרויקטים של Lightbuild משורת הפקודה.
נעילת תלויות
ב-Kotlin DSL, נעילת יחסי תלות היא אופציונלית:
מפעילים אותה בסקריפטים של ה-build, ואז כותבים קובצי נעילה על ידי הפעלת build עם הדגל --write-locks. ב-Lightbuild, לכל מודול יש קובץ resolved.deps שמתעד את יחסי התלות שנפתרו במודול, ו-Lightbuild יוצר אותו באופן אוטומטי. כמו בקובצי הנעילה של Gradle, צריך להוסיף את קובצי ה-resolved.deps לניהול הגרסאות.
כדי לנעול את יחסי התלות, למשל ב-build של CI, מוסיפים את הדגל --locked-dependencies ל-lightbuild resolve או ל-lightbuild test. עם הדגל הזה, הפקודה נכשלת אם קובץ resolved.deps לא תואם ליחסי התלות של המודול, במקום לעדכן את הקובץ:
lightbuild resolve --locked-dependencies
תכונות שאינן נתמכות
Lightbuild לא תומך בתכונות הבאות של Kotlin DSL:
- קטלוגים של גרסאות ויישומי פלאגין של מוסכמות
- פלאגינים בהתאמה אישית
- גרסאות המוצרים. במקום זאת, צרו מודול אפליקציה נפרד לכל גרסה של האפליקציה. מידע נוסף זמין בקטע מודולים מרובים של אפליקציות.
- מודולים של Kotlin Multiplatform (KMP)
- פתרון תלות באמצעות שרת proxy
בנוסף, אי אפשר לשלב בפרויקט מודולים של Kotlin DSL ו-Lightbuild. בעיות מוכרות מפורטות בנתוני הגרסה של Lightbuild.
מומלץ בשבילך
- הערה: טקסט הקישור מוצג כש-JavaScript מושבת
- הפניה להגדרות של Lightbuild
- מבנה הפרויקט ב-Lightbuild
- איך מתחילים לעבוד עם Lightbuild