التطوير عبر المنصات في التطبيقات المحمولة: ما هو، ما الأطر وكيف يعمل

المؤلف: IT Sectr نُشر: 2026-06-06 وقت القراءة: 9 دق

التطوير عبر المنصات هو أحد أكثر مجالات الهندسة المحمولة ديناميكية. وفقًا لـ Statista (2025)، 42% من مطوري التطبيقات المحمولة يستخدمون Flutter أو React Native في مشاريعهم. قنوات المنصة، الجسور والوحدات الأصلية هي أساس الهندسة المعمارية عبر المنصات.

النقاط الرئيسية

  • Flutter يستخدم Platform Channel (MethodChannel) للتواصل مع الكود الأصلي. يتم تسلسل الرسائل إلى تنسيق ثنائي وإرسالها بشكل غير متزامن.
  • React Native يستخدم Bridge (الهندسة القديمة) وFabric (الجديدة). Fabric يستخدم JSI للاستدعاء المتزامن للدوال الأصلية.
  • Kotlin Multiplatform يستخدم expect/actual — الإعلان والتنفيذ الخاص بالمنصة. Kotlin/Native يترجم الكود مباشرة إلى ثنائي iOS.
  • أدوات البناء للتطوير عبر المنصات: Gradle KTS (Kotlin DSL لـ Gradle)، CocoaPods Plugin (إدارة تبعيات iOS)، XCFramework (توزيع المكتبات الأصلية).
  • Skia (Flutter) وImpeller — محركات العرض. Impeller أحدث وأسرع ويحل مشاكل التقطيع على الأجهزة القديمة.

التطوير عبر المنصات: Flutter Platform Channel وMethod Channel

Flutter هو إطار Google لإنشاء تطبيقات أصلية من قاعدة كود Dart واحدة. للتفاعل مع كود المنصة (Kotlin، Swift)، يستخدم Flutter Platform Channel. إنه جسر يتصل من خلاله كود Dart بالدوال الأصلية ويحصل على النتيجة. تطوير التطبيقات المحمولة عبر المنصات باستخدام Flutter هو أسرع قطاع نموًا في التطوير المحمول في 2025–2026.

Platform Channel (Method Channel)

Method Channel هو قناة الاتصال الرئيسية Flutter <-> الأصلي. في جانب Dart: MethodChannel('com.example/channel').invokeMethod('getBatteryLevel'). يتم ترميز الرسالة في StandardMethodCodec (ثنائي). في الجانب الأصلي، يتم تسجيل MethodChannel ومعالجة الاستدعاء. MethodChannel غير متزامن — يتم إرجاع النتيجة عبر Future. البديل: EventChannel لتدفق الأحداث.

BasicMessageChannel هو قناة ذات مستوى أدنى لإرسال السلاسل/البايتات بدون هيكل "طريقة-وسيطات". يُستخدم للبروتوكولات المخصصة. تمر كل API لقنوات المنصة عبر Flutter Engine، الذي يقوم بتسلسل/إلغاء تسلسل الرسائل.

FFI، Skia وImpeller

dart:ffi (Foreign Function Interface) — استدعاء مباشر لدوال C من Dart بدون قنوات منصة. FFI أسرع من Method Channel (بدون حمل إضافي للتسلسل). يُستخدم للعمليات عالية الأداء: معالجة الصوت، التشفير، محركات الرسوميات. Skia هو محرك عرض Flutter (رسوميات 2D). Impeller هو محرك عرض Flutter الجديد الذي يحل محل Skia. Impeller يترجم التظليلات مسبقًا، مما يزيل التقطيع (تأخير الإطارات) في التشغيلات الأولى. في IT Sectr انتقلنا إلى Impeller في 2025 — الفرق في سلاسة الحركات ملحوظ فورًا.

التطوير عبر المنصات مع React Native: Bridge، Fabric، Hermes، JSI

React Native هو إطار Meta لتطوير التطبيقات المحمولة عبر المنصات بلغة JavaScript/TypeScript. React Native يعرض المكونات في عناصر واجهة مستخدم أصلية. تطورت الهندسة المعمارية: Bridge القديم → Fabric الجديد مع JSI.

Fabric ضد Bridge

Bridge هو الهندسة القديمة لـ React Native. يقوم مؤشر JS بتسلسل الرسائل إلى JSON وإرسالها عبر قائمة انتظار غير متزامنة إلى المؤشر الأصلي. هذا يخلق تأخيرات (ذهاب وإياب الجسر ~1 مللي ثانية). Fabric هو الهندسة الجديدة حيث يتواصل مؤشر JS ومؤشر واجهة المستخدم الأصلي بشكل متزامن عبر JSI (واجهة JavaScript). Fabric يحقن العرض الأصلي مباشرة، بدون جسر. Fabric هو علامة فارقة رئيسية في التطوير عبر المنصات، حيث يسرع العرض حتى مرتين.

JSI (واجهة JavaScript) هي API بلغة C++ تسمح لـ JavaScript باستدعاء الدوال الأصلية ومشاركة الذاكرة مباشرة. استبدلت JSI تسلسل JSON في Bridge. الهندسة الجديدة القائمة على JSI هي إنجاز حاسم في التطوير عبر المنصات، حيث تحدد أداء التطبيقات المحمولة. Turbo Module هو طريقة جديدة لكتابة الوحدات الأصلية لـ React Native. على عكس الوحدات الأصلية القديمة، يتم تحميل Turbo Module بشكل كسول ويستخدم JSI.

Hermes وCodegen

Hermes هو محرك JavaScript من Meta، محسّن لـ React Native. Hermes يترجم كود JS إلى بايت كود في وقت البناء، مما يسرع بدء تشغيل التطبيقات المحمولة ويقلل استهلاك الذاكرة في التطوير عبر المنصات. Codegen هو مولد كود أصلي بناءً على أنواع TypeScript. يقوم Codegen تلقائيًا بإنشاء وحدات أصلية وروابط JSI، مما يقلل العمل اليدوي.

المعامل Flutter React Native KMP
اللغةDartJavaScript/TypeScriptKotlin
الهندسةSkia/Impeller (عرض مخصص)Fabric + JSI (واجهة مستخدم أصلية)SDK أصلي (كل وحدة)
الجسر الأصليMethodChannel (Dart ↔ أصلي)JSI (JS ↔ C++ ↔ أصلي)expect/actual (Kotlin ↔ أصلي)
واجهة المستخدممخصصة (Skia/Impeller)مكونات أصلية (UIKit/Android Views)واجهة مستخدم أصلية (Jetpack Compose، SwiftUI)
محرك العرضSkia أو Impellerأصلي (UIView/View)أصلي

Flutter يعرض كل شيء بنفسه عبر Skia/Impeller — وهذا يعطي واجهة مستخدم موحدة على كلتا المنصتين. React Native يستخدم مكونات واجهة مستخدم أصلية — تبدو كتطبيق أصلي. KMP لا يتعامل مع واجهة المستخدم — يشارك فقط منطق الأعمال، تبقى واجهة المستخدم أصلية. يعتمد الاختيار على الأولوية: واجهة مستخدم موحدة (Flutter) أو أقصى أصالة (React Native/KMP).

التطوير عبر المنصات مع Kotlin Multiplatform: expect/actual، Kotlin/Native

Kotlin Multiplatform (KMP) هي تقنية JetBrains للكود المشترك بين Android وiOS. على عكس Flutter وReact Native، KMP هو نهج بديل للتطوير عبر المنصات: لا يستبدل واجهة المستخدم، بل يشارك منطق الأعمال، طلبات الشبكة، نماذج البيانات والمستودعات. تبقى واجهة المستخدم أصلية: Jetpack Compose لـ Android، SwiftUI لـ iOS.

expect/actual

expect — إعلان دالة أو فئة في الوحدة المشتركة (commonMain) التي لها تنفيذ خاص بالمنصة. التطوير عبر المنصات مع KMP يستخدم expect/actual: actual هو التنفيذ الملموس لكل منصة (androidMain، iosMain). مثال: expect fun getDeviceId(): String — actual على Android يستخدم Settings.Secure، على iOS — UIDevice.current.identifierForVendor.

Kotlin/Native

Kotlin/Native — مترجم Kotlin إلى ثنائي أصلي (إطار iOS). يسمح بتشغيل كود Kotlin على iOS بدون JVM. يستخدم Kotlin/Native LLVM للترجمة، مما يوفر أداءً قريبًا من Swift. Kotlin/JS — ترجمة Kotlin إلى JavaScript لمشاريع الويب وReact Native.

أدوات البناء: Gradle KTS، CocoaPods Plugin، XCFramework

أدوات البناء لتطوير التطبيقات المحمولة عبر المنصات — الجسر بين الكود والثنائي النهائي. Gradle KTS يدير جزء Android، CocoaPods Plugin يدير تبعيات iOS لـ KMP، XCFramework يدير توزيع المكتبات الأصلية.

Gradle KTS

Gradle KTS — تكوين Gradle باستخدام Kotlin DSL بدلاً من Groovy. KTS يدعم الإكمال التلقائي في Android Studio، التحقق من الأنواع وأمان إعادة الهيكلة. مثال: plugins { id("com.android.application") } بدلاً من apply plugin: 'com.android.application'. موصى به لجميع المشاريع الجديدة.

CocoaPods Plugin وXCFramework

CocoaPods Plugin — إضافة Gradle لـ KMP تنشر الوحدة المشتركة كـ pod في CocoaPods. مطور iOS يضيفها عبر Podfile. XCFramework — تنسيق توزيع المكتبات الثنائية من Apple. يحتوي XCFramework على ثنائيات لعدة معماريات (arm64، x86_64) ومنصات (iOS، macOS، watchOS). في KMP يتم تصدير الوحدة المشتركة كـ XCFramework لـ iOS.

الأسئلة الشائعة

ماذا تختار: Flutter أم React Native في 2026؟

Flutter يقدم أداءً أفضل (Skia/Impeller)، قاعدة كود واجهة مستخدم واحدة واستقرار عالٍ في التطوير عبر المنصات. React Native — مجتمع ضخم، انتقال سهل من تطوير الويب ومرونة عبر JSI. توصي IT Sectr بـ Flutter للمشاريع التي تركز على واجهة المستخدم، وReact Native إذا كان المشروع يتطلب كودًا أصليًا متكررًا.

كيف يتواصل Flutter مع الكود الأصلي عبر Platform Channel؟

Flutter يرسل رسالة عبر MethodChannel في جانب Dart. يتم ترميز الرسالة إلى تنسيق ثنائي وإرسالها إلى الجانب الأصلي (Kotlin/Swift)، حيث تتم معالجتها وإرجاع النتيجة. جميع الاتصالات في تطوير التطبيقات المحمولة غير متزامنة.

ما هو expect/actual في Kotlin Multiplatform؟

expect هو إعلان دالة أو فئة في الكود المشترك الذي له تنفيذ خاص بالمنصة. actual هو التنفيذ الملموس لكل منصة (Android/iOS). هذه هي آلية KMP للترجمة الشرطية بدون معالج مسبق.

ما الفرق بين Fabric وBridge في React Native؟

Bridge هي الهندسة القديمة حيث يتم تسلسل الرسائل إلى JSON ونقلها بشكل غير متزامن عبر قائمة انتظار. Fabric هي الهندسة الجديدة مع استدعاء متزامن للدوال الأصلية عبر JSI، مما يزيل التأخيرات ويحسن أداء التطبيقات المحمولة.

ما هو Hermes ولماذا يحتاجه React Native؟

Hermes هو محرك JavaScript من Meta، محسّن لـ React Native. يترجم JS إلى بايت كود في وقت البناء، مما يسرع بدء تشغيل التطبيق بمقدار 2–3 مرات ويقلل استهلاك الذاكرة.

الخلاصة

  • Flutter يستخدم Platform Channel (MethodChannel) للتواصل مع الكود الأصلي. FFI — للاستدعاء المباشر لدوال C بدون حمل إضافي.
  • React Native انتقل من Bridge إلى Fabric + JSI. JSI يسمح باستدعاء متزامن للدوال الأصلية، مما يزيل تأخيرات الجسر.
  • Kotlin Multiplatform يستخدم expect/actual للكود الخاص بالمنصة. Kotlin/Native يترجم الكود المشترك إلى إطار iOS أصلي.
  • تطوير التطبيقات المحمولة عبر المنصات مع Flutter يستخدم Skia/Impeller، مع React Native — JSI/Fabric، مع KMP — expect/actual للكود الأصلي.
  • Hermes — محرك JS لـ React Native. يسرع بدء التشغيل ويقلل استهلاك الذاكرة.
  • Gradle KTS — Kotlin DSL لـ Gradle. CocoaPods Plugin وXCFramework — لتوزيع ثنائيات iOS في التطوير عبر المنصات.
  • اختيار الإطار: Flutter لواجهة مستخدم موحدة، React Native لواجهة مستخدم أصلية مع JS، KMP لمشاركة منطق الأعمال مع واجهة مستخدم أصلية.
  • عند اختيار تقنية تطوير التطبيقات المحمولة عبر المنصات، ضع في اعتبارك متطلبات الأداء وحجم الفريق.

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع