A platformfüggetlen fejlesztés a mobilmérnökség egyik legdinamikusabban fejlődő területe. A Statista (2025) szerint a mobilfejlesztők 42%-a használ Fluttert vagy React Native-t a projektjeiben. A platformcsatornák, hidak és natív modulok képezik a platformfüggetlen architektúra alapját.
Főbb pontok
Flutter a Google keretrendszere natív alkalmazások létrehozására egyetlen Dart kódbázisból. A platformkóddal (Kotlin, Swift) való interakcióhoz a Flutter Platform Channel-t használ. Ez egy híd, amelyen keresztül a Dart kód natív függvényeket hív meg és kapja meg az eredményt. A platformfüggetlen mobilalkalmazás-fejlesztés Flutter-rel a mobilfejlesztés leggyorsabban növekvő szegmense 2025–2026-ban.
Method Channel a fő Flutter <-> Natív kommunikációs csatorna. A Dart oldalon: MethodChannel('com.example/channel').invokeMethod('getBatteryLevel'). Az üzenet StandardMethodCodec (bináris) formátumba van kódolva. A natív oldalon egy MethodChannel kerül regisztrálásra és kezeli a hívást. A MethodChannel aszinkron — az eredmény Future-n keresztül kerül vissza. Alternatíva: EventChannel eseményfolyamokhoz.
BasicMessageChannel egy alacsonyabb szintű csatorna karakterláncok/bájtok küldéséhez "metódus-argumentum" struktúra nélkül. Egyéni protokollokhoz használatos. Az összes Platform Channel API a Flutter Engine-en megy keresztül, amely szerializálja/deszerializálja az üzeneteket.
dart:ffi (Foreign Function Interface) — C függvények közvetlen meghívása Dart-ból platformcsatornák nélkül. Az FFI gyorsabb, mint a Method Channel (0 szerializációs többletterhelés). Teljesítményigényes műveletekhez használatos: hangfeldolgozás, kriptográfia, grafikus motorok. Skia a Flutter render motorja (2D grafika). Impeller a Flutter új render motorja, amely felváltja a Skiát. Az Impeller előre lefordítja az árnyékolókat (Ahead-of-Time), kiküszöbölve a jank-ot (képkocka akadozás) az első indításoknál. Az IT Sectr-nél 2025-ben váltottunk Impeller-re — a különbség az animációk simaságában azonnal észrevehető.
React Native a Meta keretrendszere platformfüggetlen mobilalkalmazás-fejlesztéshez JavaScript/TypeScript-ben. A React Native komponenseket natív UI elemekké rendereli. Az architektúra fejlődött: régi Bridge → új Fabric JSI-vel.
Bridge a régi React Native architektúra. A JS szál szerializálja az üzeneteket JSON-ba, és egy aszinkron várakozási soron keresztül küldi a natív szálnak. Ez késleltetéseket okoz (híd oda-vissza ~1 ms). Fabric az új architektúra, ahol a JS és natív UI szálak szinkron módon kommunikálnak a JSI-n (JavaScript Interface) keresztül. A Fabric közvetlenül, híd nélkül injektálja a natív nézeteket. A Fabric kulcsfontosságú mérföldkő a platformfüggetlen fejlesztésben, akár 2-szeresére gyorsítva a renderelést.
JSI (JavaScript Interface) egy C++ API, amely lehetővé teszi a JavaScript számára, hogy közvetlenül hívjon natív függvényeket és ossza meg a memóriát. A JSI felváltotta a Bridge JSON szerializációját. A JSI-alapú új architektúra kulcsfontosságú eredmény a platformfüggetlen fejlesztésben, meghatározva a mobilalkalmazások teljesítményét. Turbo Module egy új módszer natív modulok írására a React Native számára. A régi Native Modules-szal ellentétben a Turbo Module lustán töltődik be és JSI-t használ.
Hermes egy JavaScript motor a Meta-tól, optimalizálva a React Native számára. A Hermes bájtkódba fordítja a JS kódot a build idő alatt, felgyorsítva a mobilalkalmazások indítását és csökkentve a memóriafogyasztást a platformfüggetlen fejlesztésben. Codegen egy natív kódgenerátor TypeScript típusok alapján. A Codegen automatikusan létrehozza a natív modulokat és JSI kötéseket, csökkentve a kézi munkát.
| Paraméter | Flutter | React Native | KMP |
|---|---|---|---|
| Nyelv | Dart | JavaScript/TypeScript | Kotlin |
| Architektúra | Skia/Impeller (egyéni render) | Fabric + JSI (natív UI) | Natív SDK (minden modul) |
| Natív híd | MethodChannel (Dart ↔ Natív) | JSI (JS ↔ C++ ↔ Natív) | expect/actual (Kotlin ↔ Natív) |
| UI | Egyéni (Skia/Impeller) | Natív komponensek (UIKit/Android Views) | Natív UI (Jetpack Compose, SwiftUI) |
| Render motor | Skia vagy Impeller | Natív (UIView/View) | Natív |
Flutter mindent maga renderel a Skia/Impeller segítségével — ez egységes UI-t biztosít mindkét platformon. React Native natív UI komponenseket használ — úgy néz ki, mint egy natív alkalmazás. KMP nem foglalkozik az UI-val — csak az üzleti logikát osztja meg, az UI natív marad. A választás a prioritástól függ: egységes UI (Flutter) vagy maximális natívság (React Native/KMP).
Kotlin Multiplatform (KMP) a JetBrains technológiája megosztott kódhoz Android és iOS között. A Flutter-től és React Native-tól eltérően a KMP egy alternatív megközelítés a platformfüggetlen fejlesztéshez: nem helyettesíti az UI-t, hanem megosztja az üzleti logikát, hálózati kéréseket, adatmodelleket és adattárakat. Az UI natív marad: Jetpack Compose Androidhoz, SwiftUI iOS-hez.
expect — egy függvény vagy osztály deklarációja a közös modulban (commonMain), amely platform implementációval rendelkezik. A KMP-vel történő platformfüggetlen fejlesztés expect/actual-t használ: actual a konkrét implementáció minden platformhoz (androidMain, iosMain). Példa: expect fun getDeviceId(): String — actual Androidon a Settings.Secure-t használja, iOS-en — UIDevice.current.identifierForVendor.
Kotlin/Native — egy Kotlin fordító natív binárisba (iOS keretrendszer). Lehetővé teszi Kotlin kód futtatását iOS-en JVM nélkül. A Kotlin/Native LLVM-et használ a fordításhoz, Swift-hez közeli teljesítményt nyújtva. Kotlin/JS — Kotlin fordítása JavaScript-be webes és React Native projektekhez.
A platformfüggetlen mobilalkalmazás-fejlesztés build eszközei — a híd a kód és a végső bináris között. A Gradle KTS kezeli az Android részt, a CocoaPods Plugin kezeli a KMP iOS függőségeit, az XCFramework kezeli a natív könyvtárak terjesztését.
Gradle KTS — Gradle konfiguráció Kotlin DSL használatával Groovy helyett. A KTS támogatja az automatikus kiegészítést az Android Studio-ban, típusellenőrzést és refaktorálási biztonságot. Példa: plugins { id("com.android.application") } az apply plugin: 'com.android.application' helyett. Minden új projekthez ajánlott.
CocoaPods Plugin — egy Gradle plugin KMP-hez, amely közzéteszi a megosztott modult CocoaPods pod-ként. Egy iOS fejlesztő Podfile-on keresztül adja hozzá. XCFramework — az Apple bináris könyvtár terjesztési formátuma. Az XCFramework binárisokat tartalmaz több architektúrához (arm64, x86_64) és platformhoz (iOS, macOS, watchOS). A KMP-ben a megosztott modul XCFramework-ként kerül exportálásra iOS-hez.
Gyakran ismételt kérdések
Flutter jobb teljesítményt (Skia/Impeller), egységes UI kódbázist és magas stabilitást kínál a platformfüggetlen fejlesztésben. React Native — hatalmas közösség, könnyű átmenet a webfejlesztésből és rugalmasság a JSI-n keresztül. Az IT Sectr a Flutter-t ajánlja UI-központú projektekhez, a React Native-ot ha a projekt gyakori natív kódot igényel.
Flutter üzenetet küld a MethodChannel-en keresztül a Dart oldalon. Az üzenet bináris formátumba van kódolva és továbbításra kerül a natív oldalra (Kotlin/Swift), ahol feldolgozásra kerül és visszaadja az eredményt. Minden kommunikáció a mobilalkalmazás-fejlesztésben aszinkron.
expect egy függvény vagy osztály deklarációja a közös kódban, amely platform implementációval rendelkezik. actual a konkrét implementáció minden platformhoz (Android/iOS). Ez a KMP mechanizmusa a feltételes fordításhoz előfeldolgozó nélkül.
Bridge a régi architektúra, ahol az üzenetek JSON-ba szerializálódnak és aszinkron módon kerülnek továbbításra egy várakozási soron keresztül. A Fabric az új architektúra szinkron natív függvényhívásokkal a JSI-n keresztül, kiküszöbölve a késleltetéseket és javítva a mobilalkalmazások teljesítményét.
Hermes egy JavaScript motor a Meta-tól, optimalizálva a React Native számára. A JS-t bájtkódba fordítja a build idő alatt, 2–3-szor felgyorsítva az alkalmazás indítását és csökkentve a memóriafogyasztást.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.