بنية مشروع KMM
الشيفرة المشتركة وشيفرة المنصة
بنية مشروع KMM درس مجاني في Kotlin Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Kotlin Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ما KMM؟
يتيح Kotlin Multiplatform Mobile (KMM) مشاركة الشيفرة بين iOS وAndroid مع الحفاظ على واجهات مستخدم أصلية. تكتبون منطق الأعمال مرة واحدة باستخدام Kotlin.
الوحدة shared
يتمحور مشروع KMM حول وحدة shared. تُجمَّع هذه الوحدة في مكتبة JVM لنظام Android وفي إطار عمل أصلي لنظام iOS.
- يستخدمها Android باعتبارها اعتمادًا عاديًا
- يستوردها iOS باعتبارها إطار عمل Objective-C/Swift
مجموعات المصدر
تنقسم وحدة shared إلى مجموعات مصدر:
commonMain— شيفرة مشتركة مستقلة عن المنصةandroidMain— شيفرة خاصة بنظام AndroidiosMain— شيفرة خاصة بنظام iOS
commonMain
لا يمكن لـ commonMain استخدام سوى مكتبة Kotlin القياسية والمكتبات متعددة المنصات. ويجب ألا يشير مباشرةً إلى واجهات برمجة تطبيقات Android أو iOS.
// shared/src/commonMain/kotlin/Greeting.kt
class Greeting {
fun greet(): String = "Hello, KMM!"
}تهيئة الأهداف
يعلن ملف build.gradle.kts المشترك عن المنصات المطلوب بناؤها باستخدام الإضافة متعددة المنصات.
kotlin {
androidTarget()
iosX64()
iosArm64()
iosSimulatorArm64()
}إطار عمل iOS
تُجمَّع أهداف iOS في إطار عمل واحد يستورده Xcode.
kotlin {
listOf(iosX64(), iosArm64(), iosSimulatorArm64()).forEach {
it.binaries.framework {
baseName = "Shared"
}
}
}الاعتمادات المشتركة
توضع المكتبات متعددة المنصات (coroutines وserialization وKtor) في commonMain لكي تشترك فيها جميع الأهداف.
sourceSets {
val commonMain by getting {
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1")
}
}
}وحدة تطبيق Android
تعتمد وحدة تطبيق Android على shared مثلها مثل أي وحدة Gradle، وتبني واجهة Android باستخدام Jetpack Compose أو Views.
// androidApp/build.gradle.kts
dependencies {
implementation(project(":shared"))
}تطبيق iOS
تطبيق iOS هو مشروع Xcode قياسي. إذ يربط إطار العمل Shared الذي تم إنشاؤه تلقائيًا، ويستدعي فئات Kotlin من Swift.
// Swift
// import Shared
// let text = Greeting().greet()ما الذي ينبغي مشاركته
تشمل الشيفرة المشتركة المعتادة: الاتصال بالشبكة، ونماذج البيانات، والمستودعات، وحالات الاستخدام، والتحقق. اتركوا واجهة المستخدم والتنقل ومستشعرات المنصة أصلية.
تحية مكتفية ذاتيًا
المنطق المشترك هو Kotlin عادي. إليكم الفئة نفسها وهي تعمل بصورة مستقلة لإظهار أنها شيفرة عادية.
class Greeting {
fun greet(): String = "Hello, KMM!"
}
fun main() {
println(Greeting().greet())
}تحقق سريع
أين تضعون الشيفرة التي يجب أن تكون خالية من أي مراجع إلى واجهات برمجة تطبيقات Android أو iOS؟
مراجعة
تعلّمتم بنية KMM:
- وحدة
sharedتحتوي علىcommonMainوandroidMainوiosMain - تُعلن الأهداف في الإضافة متعددة المنصات؛ ويحصل iOS على إطار عمل
- يعتمد Android عبر
project(":shared")؛ ويستورد iOS إطار العمل
التالي: expect وactual.
الأسئلة الشائعة
هل درس «بنية مشروع KMM» مجاني؟
نعم — نص درس «بنية مشروع KMM» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Kotlin Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Kotlin Academy 4 دروس في المجموع.
ماذا ستتعلم في «بنية مشروع KMM»؟
الشيفرة المشتركة وشيفرة المنصة تتمرن على Kotlin Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Kotlin Academy؟
لا تُشترط خبرة سابقة. Kotlin Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «بنية مشروع KMM»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Kotlin Academy هذا؟
نعم. كل درس في Kotlin Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- بنية مشروع KMM
- expect وactual
- مشاركة منطق الأعمال
- واجهات API للمنصة