Kotlin Multiplatform vs Flutter
KMP (منطق أعمال مشترك + واجهة مستخدم native) مقابل Flutter (واجهة مستخدم وruntime مشتركين) — مقارنة بين حلول تطوير الجوال متعدد المنصات. الأداء، تجربة المطور، النظام البيئي.
انتقل إلى iOS وAndroid في آن واحد بكود SwiftUI
لغة Kotlin منذ 2012؛ نموذج KMP الجاهز للإنتاج لمنطق مشترك + واجهة مستخدم أصلية
الأدلة لا تمنحك "فائزًا" واضحًا بل "يعتمد عليك" واضحًا: فمجموعة تطوير Swift 6.3 الرسمية وتحوّل Skip إلى المجانية يجعلان "الوصول إلى أندرويد دون تعلّم Kotlin" قابلاً للدفاع عنه لأول مرة. على نطاق الإنتاج ما زالت KMP متقدمة: Duolingo وGoogle وMcDonald's وNetflix حالات واسعة النطاق. ومعرض Skip يسرد 24 تطبيقًا بالاسم لكن دون نطاق أو مقاييس منشورة. إن كنت فريقًا صغيرًا بلا وقت لتعلّم Kotlin فجرّب Skip؛ وإن كنت مؤسسة منخفضة تحمّل المخاطر فـ KMP تبقى الخيار الآمن.
| الفئة | Skip (Swift on Android) | Kotlin Multiplatform |
|---|---|---|
| الأداء | 8/10 | 9/10 |
| سهولة التعلّم | 6/10 | 6/10 |
| النظام البيئي | 6/10 | 9/10 |
| المجتمع | 5/10 | 9/10 |
| سوق العمل | 4/10 | 8/10 |
| الاستدامة المستقبلية | 7/10 | 9/10 |
// Skip: التثبيت وإنشاء مشروع جديد على جهاز مثبّت عليه Xcode وAndroid Studio
// المصدر: https://skip.dev/docs/gettingstarted/ + https://skip.dev/docs/skip-cli/
// 1) ثبّت سلسلة أدوات Skip (Homebrew)
brew install skip
// 2) تحقّق من البيئة (إصدارات Xcode وAndroid Studio وJava وGradle)
skip checkup
// 3) أنشئ مشروع Skip App جديدًا (وضع Fuse، iOS+Android).
// أمر `skip create` تفاعلي بالكامل ولا يقبل أعلامًا؛ البديل غير التفاعلي هو `skip init`:
skip init --native-app --appid=com.example.HelloSkip hello-skip HelloSkip
// 4) إن أردت إضافة Android إلى تطبيق iOS حالي بنموذج Library:
// استخرج المنطق المشترك إلى وحدة مكتبة أصلية منفصلة
skip init --native-model shared-feature SharedFeature
// تكتب عرض SwiftUI الناتج كأي عرض SwiftUI اعتيادي على iOS:
import SwiftUI
struct ContentView: View {
@State private var count = 0
var body: some View {
VStack(spacing: 16) {
Text("الانتقال إلى Android عبر Skip")
.font(.title2)
Text("العدّاد: \(count)")
Button("زيادة") {
count += 1
}
.buttonStyle(.borderedProminent)
}
.padding()
}
}
// 5) صرّف وشغّل على Android (عبر Gradle؛ في الخلفية تتحوّل شجرة عرض
// SwiftUI إلى استدعاءات Jetpack Compose).
// شرط مسبق: شغّل المحاكي بنفسك — `skip app launch` لا يشغّله نيابة عنك.
cd hello-skip
skip android emulator launch
skip app launch --android// Kotlin Multiplatform: منطق مشترك + expect/actual
// المصدر: https://kotlinlang.org/docs/multiplatform/get-started.html
// commonMain/kotlin/Counter.kt — منطق مشترك بين كل المنصات
class Counter {
private var value: Int = 0
fun increment(): Int { value += 1; return value }
fun current(): Int = value
}
// commonMain/kotlin/Platform.kt
expect fun platformName(): String
// androidMain/kotlin/Platform.android.kt
actual fun platformName(): String = "Android ${android.os.Build.VERSION.SDK_INT}"
// iosMain/kotlin/Platform.ios.kt
import platform.UIKit.UIDevice
actual fun platformName(): String =
UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion
// على جانب Android، تستخدم واجهة Compose نفس Counter المشترك
@Composable
fun CounterScreen(counter: Counter) {
var count by remember { mutableStateOf(counter.current()) }
Column(modifier = Modifier.padding(16.dp)) {
Text("منطق مشترك عبر Kotlin Multiplatform")
Text("العدّاد: $count")
Button(onClick = { count = counter.increment() }) { Text("زيادة") }
}
}
// build.gradle.kts (module: shared)
kotlin {
androidTarget()
listOf(iosX64(), iosArm64(), iosSimulatorArm64()).forEach {
it.binaries.framework { baseName = "Shared" }
}
sourceSets {
commonMain.dependencies {
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0")
}
}
}الأدلة لا تمنحك "فائزًا" واضحًا بل "يعتمد عليك" واضحًا: فمجموعة تطوير Swift 6.3 الرسمية وتحوّل Skip إلى المجانية يجعلان "الوصول إلى أندرويد دون تعلّم Kotlin" قابلاً للدفاع عنه لأول مرة. على نطاق الإنتاج ما زالت KMP متقدمة: Duolingo وGoogle وMcDonald's وNetflix حالات واسعة النطاق. ومعرض Skip يسرد 24 تطبيقًا بالاسم لكن دون نطاق أو مقاييس منشورة. إن كنت فريقًا صغيرًا بلا وقت لتعلّم Kotlin فجرّب Skip؛ وإن كنت مؤسسة منخفضة تحمّل المخاطر فـ KMP تبقى الخيار الآمن.
احصل على استشارة مجانيةنعم. اعتبارًا من Swift 6.3 (24 مارس 2026) توجد حزمة تطوير رسمية Swift SDK for Android، ويمكن تصريف حزم Swift مباشرة لهدف Android. أدوات مثل Skip تبني على هذا الأساس فتحوّل عروض SwiftUI إلى واجهة Jetpack Compose حقيقية، ما يوفّر تدفق تطوير عملي. المصدر: swift.org/blog/swift-6.3-released.