Mobil uygulamalarda platformlar arası geliştirme: nedir, hangi framework'ler ve nasıl çalışır

Yazar: IT Sectr Yayınlanma: 2026-06-06 Okuma süresi: 9 dk

Platformlar arası geliştirme, mobil mühendisliğin en dinamik gelişen alanlarından biridir. Statista (2025)'ya göre, mobil geliştiricilerin %42'si projelerinde Flutter veya React Native kullanıyor. Platform kanalları, köprüler ve yerel modüller platformlar arası mimarinin temelidir.

Önemli noktalar

  • Flutter, yerel kodla iletişim kurmak için Platform Channel (MethodChannel) kullanır. Mesajlar ikili formatta serileştirilir ve asenkron olarak iletilir.
  • React Native, Bridge (eski mimari) ve Fabric (yeni) kullanır. Fabric, senkron yerel fonksiyon çağrıları için JSI kullanır.
  • Kotlin Multiplatform, expect/actual — bildirim ve platform uygulaması kullanır. Kotlin/Native, kodu doğrudan iOS ikili dosyasına derler.
  • Derleme araçları platformlar arası geliştirme için: Gradle KTS (Gradle için Kotlin DSL), CocoaPods Plugin (iOS bağımlılık yönetimi), XCFramework (yerel kütüphane dağıtımı).
  • Skia (Flutter) ve Impeller — render motorları. Impeller daha yeni, daha hızlı ve eski cihazlarda jank sorunlarını çözer.

Platformlar arası geliştirme: Flutter Platform Channel ve Method Channel

Flutter, tek bir Dart kod tabanından yerel uygulamalar oluşturmak için Google'ın framework'üdür. Platform koduyla (Kotlin, Swift) etkileşim kurmak için Flutter, Platform Channel kullanır. Bu, Dart kodunun yerel fonksiyonları çağırdığı ve sonucu aldığı bir köprüdür. Flutter ile platformlar arası mobil uygulama geliştirme, 2025–2026'da mobil geliştirmenin en hızlı büyüyen segmentidir.

Platform Channel (Method Channel)

Method Channel, Flutter <-> Yerel arasındaki ana iletişim kanalıdır. Dart tarafında: MethodChannel('com.example/channel').invokeMethod('getBatteryLevel'). Mesaj StandardMethodCodec (ikili) ile kodlanır. Yerel tarafta bir MethodChannel kaydedilir ve çağrıyı işler. MethodChannel asenkrondur — sonuç Future aracılığıyla döndürülür. Alternatif: EventChannel olay akışları için.

BasicMessageChannel, "yöntem-argüman" yapısı olmadan dize/byte göndermek için daha düşük seviyeli bir kanaldır. Özel protokoller için kullanılır. Tüm Platform Channel API'si, mesajları serileştiren/seri durumdan çıkaran Flutter Engine'dan geçer.

FFI, Skia ve Impeller

dart:ffi (Foreign Function Interface) — platform kanalları olmadan Dart'tan C fonksiyonlarının doğrudan çağrılması. FFI, Method Channel'dan daha hızlıdır (0 serileştirme yükü). Performans yoğun işlemler için kullanılır: ses işleme, şifreleme, grafik motorları. Skia, Flutter'ın render motorudur (2D grafik). Impeller, Skia'nın yerini alan Flutter'ın yeni render motorudur. Impeller, gölgelendiricileri önceden derleyerek ilk başlatmalarda jank (kare takılması) sorununu ortadan kaldırır. IT Sectr'de 2025'te Impeller'a geçtik — animasyon pürüzsüzlüğündeki fark hemen fark edilir.

React Native ile platformlar arası geliştirme: Bridge, Fabric, Hermes, JSI

React Native, JavaScript/TypeScript ile platformlar arası mobil uygulama geliştirme için Meta'nın framework'üdür. React Native, bileşenleri yerel UI öğelerine dönüştürür. Mimari evrim geçirdi: eski Bridge → JSI ile yeni Fabric.

Fabric vs Bridge

Bridge, eski React Native mimarisidir. JS iş parçacığı mesajları JSON'a serileştirir ve asenkron kuyruk aracılığıyla yerel iş parçacığına gönderir. Bu gecikmelere neden olur (köprü gidiş-dönüş ~1 ms). Fabric, JS ve yerel UI iş parçacıklarının JSI (JavaScript Interface) aracılığıyla senkron iletişim kurduğu yeni mimaridir. Fabric, köprü olmadan doğrudan yerel görünümleri enjekte eder. Fabric, platformlar arası geliştirmede önemli bir kilometre taşıdır ve render hızını 2 kata kadar artırır.

JSI (JavaScript Interface), JavaScript'in doğrudan yerel fonksiyonları çağırmasına ve belleği paylaşmasına izin veren bir C++ API'sidir. JSI, Bridge'in JSON serileştirmesinin yerini aldı. JSI tabanlı yeni mimari, platformlar arası geliştirmede çok önemli bir başarıdır ve mobil uygulama performansını belirler. Turbo Module, React Native için yerel modüller yazmanın yeni bir yoludur. Eski Native Modules'ün aksine, Turbo Module tembel yüklenir ve JSI kullanır.

Hermes ve Codegen

Hermes, React Native için optimize edilmiş Meta'dan bir JavaScript motorudur. Hermes, JS kodunu derleme zamanında bayt koduna derleyerek mobil uygulama başlatmayı hızlandırır ve platformlar arası geliştirmede bellek tüketimini azaltır. Codegen, TypeScript türlerine dayalı yerel kod üretecidir. Codegen otomatik olarak yerel modüller ve JSI bağlantıları oluşturarak manuel işi azaltır.

Parametre Flutter React Native KMP
DilDartJavaScript/TypeScriptKotlin
MimariSkia/Impeller (özel render)Fabric + JSI (yerel UI)Yerel SDK (her modül)
Yerel köprüMethodChannel (Dart ↔ Yerel)JSI (JS ↔ C++ ↔ Yerel)expect/actual (Kotlin ↔ Yerel)
UIÖzel (Skia/Impeller)Yerel bileşenler (UIKit/Android Views)Yerel UI (Jetpack Compose, SwiftUI)
Render motoruSkia veya ImpellerYerel (UIView/View)Yerel

Flutter, Skia/Impeller aracılığıyla her şeyi kendisi render eder — bu her iki platformda da birleşik bir UI sağlar. React Native yerel UI bileşenleri kullanır — yerel bir uygulama gibi görünür. KMP UI ile ilgilenmez — yalnızca iş mantığını paylaşır, UI yerel kalır. Seçim önceliğe bağlıdır: birleşik UI (Flutter) veya maksimum yerlilik (React Native/KMP).

Kotlin Multiplatform ile platformlar arası geliştirme: expect/actual, Kotlin/Native

Kotlin Multiplatform (KMP), Android ve iOS arasında paylaşılan kod için JetBrains teknolojisidir. Flutter ve React Native'in aksine KMP, platformlar arası geliştirmeye alternatif bir yaklaşımdır: UI'yı değiştirmez, iş mantığını, ağ isteklerini, veri modellerini ve depoları paylaşır. UI yerel kalır: Android için Jetpack Compose, iOS için SwiftUI.

expect/actual

expect — platform uygulaması olan ortak modüldeki (commonMain) bir işlev veya sınıf bildirimi. KMP ile platformlar arası geliştirme expect/actual kullanır: actual her platform (androidMain, iosMain) için somut uygulamadır. Örnek: expect fun getDeviceId(): String — Android'de actual Settings.Secure kullanır, iOS'ta — UIDevice.current.identifierForVendor.

Kotlin/Native

Kotlin/Native — Kotlin'i yerel ikili dosyaya (iOS framework) derleyen bir derleyici. JVM olmadan iOS'ta Kotlin kodu çalıştırmaya izin verir. Kotlin/Native derleme için LLVM kullanır ve Swift'e yakın performans sağlar. Kotlin/JS — web ve React Native projeleri için Kotlin'in JavaScript'e derlenmesi.

Derleme araçları: Gradle KTS, CocoaPods Plugin, XCFramework

Platformlar arası mobil uygulama geliştirmenin derleme araçları — kod ile nihai ikili dosya arasındaki köprüdür. Gradle KTS Android kısmını yönetir, CocoaPods Plugin KMP iOS bağımlılıklarını yönetir, XCFramework yerel kütüphane dağıtımını yönetir.

Gradle KTS

Gradle KTS — Groovy yerine Kotlin DSL kullanarak Gradle yapılandırması. KTS, Android Studio'da otomatik tamamlama, tür denetimi ve yeniden düzenleme güvenliğini destekler. Örnek: apply plugin: 'com.android.application' yerine plugins { id("com.android.application") }. Tüm yeni projeler için önerilir.

CocoaPods Plugin ve XCFramework

CocoaPods Plugin — paylaşılan modülü CocoaPods pod'u olarak yayınlayan KMP için Gradle eklentisidir. Bir iOS geliştiricisi bunu Podfile aracılığıyla ekler. XCFramework — Apple'ın ikili kütüphane dağıtım biçimidir. XCFramework, birden çok mimari (arm64, x86_64) ve platform (iOS, macOS, watchOS) için ikili dosyalar içerir. KMP'de paylaşılan modül, iOS için XCFramework olarak dışa aktarılır.

Sıkça sorulan sorular

2026'da ne seçmeli: Flutter mı React Native mi?

Flutter daha iyi performans (Skia/Impeller), tek bir UI kod tabanı ve platformlar arası geliştirmede yüksek kararlılık sunar. React Native — büyük topluluk, web geliştirmeden kolay geçiş ve JSI aracılığıyla esneklik. IT Sectr, UI odaklı projeler için Flutter'ı, sık yerel kod gerektiren projeler için React Native'i önerir.

Flutter, Platform Channel aracılığıyla yerel kodla nasıl iletişim kurar?

Flutter, Dart tarafında MethodChannel aracılığıyla bir mesaj gönderir. Mesaj ikili formata kodlanır ve yerel tarafa (Kotlin/Swift) iletilir, burada işlenir ve sonucu döndürür. Mobil uygulama geliştirmede tüm iletişim asenkrondur.

Kotlin Multiplatform'da expect/actual nedir?

expect, platform uygulaması olan ortak koddaki bir işlev veya sınıf bildirimidir. actual, her platform (Android/iOS) için somut uygulamadır. Bu, ön işlemci olmadan koşullu derleme için KMP'nin mekanizmasıdır.

React Native'de Fabric ve Bridge arasındaki fark nedir?

Bridge, mesajların JSON'a serileştirildiği ve bir kuyruk aracılığıyla asenkron olarak iletildiği eski mimaridir. Fabric, JSI aracılığıyla senkron yerel fonksiyon çağrılarına sahip yeni mimaridir, gecikmeleri ortadan kaldırır ve mobil uygulama performansını artırır.

Hermes nedir ve React Native'in neden ona ihtiyacı var?

Hermes, React Native için optimize edilmiş Meta'dan bir JavaScript motorudur. JS'yi derleme zamanında bayt koduna derleyerek uygulama başlatmayı 2–3 kat hızlandırır ve bellek tüketimini azaltır.

Özet

  • Flutter, yerel kodla iletişim için Platform Channel (MethodChannel) kullanır. FFI — yük olmadan doğrudan C fonksiyon çağrıları için.
  • React Native, Bridge'den Fabric + JSI'ya geçti. JSI, senkron yerel fonksiyon çağrılarına izin vererek köprü gecikmelerini ortadan kaldırır.
  • Kotlin Multiplatform, platform kodu için expect/actual kullanır. Kotlin/Native, ortak kodu yerel bir iOS framework'üne derler.
  • Platformlar arası mobil uygulama geliştirme, Flutter ile Skia/Impeller, React Native ile — JSI/Fabric, KMP ile — yerel kod için expect/actual kullanır.
  • Hermes — React Native için JS motoru. Başlatmayı hızlandırır ve bellek tüketimini azaltır.
  • Gradle KTS — Gradle için Kotlin DSL. CocoaPods Plugin ve XCFramework — platformlar arası geliştirmede iOS ikili dosyalarını dağıtmak için.
  • Framework seçimi: Birleşik UI için Flutter, JS ile yerel UI için React Native, yerel UI ile iş mantığı paylaşımı için KMP.
  • Platformlar arası mobil uygulama geliştirme teknolojisi seçerken performans gereksinimlerini ve ekip büyüklüğünü göz önünde bulundurun.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış