إذا كنت على دراية بإعداد إصدارات Android باستخدام Kotlin DSL، توضّح هذه الصفحة كيفية ربط إعدادات Kotlin DSL الشائعة بـ Lightbuild.
تستخدم الأمثلة الواردة في هذه الصفحة لغة Kotlin DSL والإصدار 9.0 أو إصدار أحدث من المكوّن الإضافي لنظام Gradle المتوافق مع Android (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 |
| إصدار 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 | مضمّنة في الإصدار 9.0 من المكوّن الإضافي لنظام Gradle المتوافق مع Android والإصدارات الأحدث | مدمجة |
| عامل ترويجي رئيسي (KSP) | id("com.google.devtools.ksp") |
يتم تطبيقها تلقائيًا عند الإفصاح عن kspProcessors |
| Protocol Buffers | 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("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
أوامر الإنشاء
باستخدام Kotlin DSL، يمكنك إنشاء الإصدارات واختبارها من سطر الأوامر من خلال تشغيل مهام Gradle باستخدام أداة Gradle Wrapper. باستخدام 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.
التطبيقات المقترَحة لك
- ملاحظة: يتم عرض نص الرابط عندما يكون JavaScript غير مفعَّل
- مرجع إعدادات Lightbuild
- بنية مشروع Lightbuild
- بدء استخدام Lightbuild