ما هو Kotlin Multiplatform ولماذا تحتاجه؟
Kotlin Multiplatform (KMP) ليست مكتبة بالمعنى التقليدي، بل هي تقنية (SDK ومجموعة أدوات) من JetBrains تتيح لك كتابة كود مشترك بلغة Kotlin وتجميعه لمنصات متعددة: JVM (Android، خوادم)، JavaScript (متصفحات الويب، Node.js)، Native (iOS، macOS، Windows، Linux، watchOS، tvOS).
لماذا تحتاجه؟ في التطوير الحديث، غالبًا ما تحتاج لبناء تطبيقات لمنصات مختلفة. تقليديًا، كان هذا يعني كتابة كود بلغات مختلفة (Swift لنظام iOS، Java/Kotlin لنظام Android، JavaScript للويب). Kotlin Multiplatform يحل هذه المشكلة بالسماح لك بنقل منطق الأعمال (طلبات الشبكة، التعامل مع قواعد البيانات، التحقق من البيانات، التسلسل) إلى وحدة مشتركة تُستخدم على جميع المنصات. يبقى الكود الخاص بالمنصة (واجهة المستخدم، التعامل مع الكاميرا، الحساسات) أصليًا، لكن حجمه يقل بشكل كبير.
المزايا الرئيسية:
- تقليل وقت التطوير: اكتب المنطق مرة واحدة واستخدمه في كل مكان.
- قاعدة كود موحدة: أخطاء أقل، صيانة وإعادة هيكلة أسهل.
- أداء أصلي: على عكس React Native أو Flutter، يتم تجميع KMP إلى كود أصلي، ولا يعمل عبر طبقة وسيطة.
- مرونة: يمكنك البدء صغيرًا - بنقل مكتبة واحدة فقط (مثل مكتبة طلبات الشبكة) ثم توسيع الكود المشترك تدريجيًا.
- استخدام الكود الموجود: يمكنك ربط المكتبات الأصلية عبر آلية
expect/actual.
Kotlin Multiplatform مثالي لـ: تطبيقات الجوال (Android + iOS)، تطبيقات الخادم (Ktor + KMP)، تطبيقات الويب (Kotlin/JS)، تطبيقات سطح المكتب (Compose Multiplatform)، والمكتبات التي يجب أن تعمل في كل مكان.
التثبيت والإعداد
لا يتم تثبيت Kotlin Multiplatform عبر pip أو npm. إنها أداة بناء يتم إعدادها عبر نظام البناء Gradle. فيما يلي العملية القياسية لإنشاء مشروع باستخدام KMP.
1. تثبيت IntelliJ IDEA أو Android Studio
يوصى باستخدام IntelliJ IDEA Ultimate (إصدار Community مناسب أيضًا ولكن مع بعض القيود) أو Android Studio مع إضافة Kotlin Multiplatform.
2. إنشاء المشروع
أسهل طريقة هي استخدام Kotlin Multiplatform Wizard (أداة عبر الإنترنت من JetBrains): https://kmp.jetbrains.com/. اختر المنصات التي تحتاجها (Android، iOS، Desktop، Web) وقم بتنزيل القالب الجاهز.
3. هيكل المشروع (Gradle)
ملف التكوين الرئيسي هو build.gradle.kts (الجذر والوحدات). الإضافات الرئيسية:
// ملف build.gradle.kts الجذر
plugins {
kotlin("multiplatform") version "1.9.22" apply false
kotlin("plugin.serialization") version "1.9.22" apply false
id("com.android.application") version "8.2.0" apply false
id("org.jetbrains.compose") version "1.5.11" apply false
}
// وحدة shared (الكود المشترك)
plugins {
kotlin("multiplatform")
kotlin("plugin.serialization")
id("com.android.library")
}
kotlin {
androidTarget {
compilations.all {
kotlinOptions {
jvmTarget = "1.8"
}
}
}
listOf(
iosX64(),
iosArm64(),
iosSimulatorArm64()
).forEach {
it.binaries.framework {
baseName = "shared"
isStatic = true
}
}
sourceSets {
val commonMain by getting {
dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.2")
implementation("io.ktor:ktor-client-core:2.3.7")