Vývoj napříč platformami v mobilních aplikacích: co to je, jaké frameworky a jak to funguje

Autor: IT Sectr Publikováno: 2026-06-06 Doba čtení: 9 min

Vývoj napříč platformami je jednou z nejdynamičtěji se rozvíjejících oblastí mobilního inženýrství. Podle Statista (2025) používá 42 % mobilních vývojářů Flutter nebo React Native ve svých projektech. Platformní kanály, mosty a nativní moduly jsou základem architektury napříč platformami.

Klíčové body

  • Flutter používá Platform Channel (MethodChannel) ke komunikaci s nativním kódem. Zprávy jsou serializovány do binárního formátu a přenášeny asynchronně.
  • React Native používá Bridge (stará architektura) a Fabric (nová). Fabric používá JSI pro synchronní volání nativních funkcí.
  • Kotlin Multiplatform používá expect/actual — deklaraci a implementaci platformy. Kotlin/Native kompiluje kód přímo do iOS binárního souboru.
  • Nástroje pro sestavení pro vývoj napříč platformami: Gradle KTS (Kotlin DSL pro Gradle), CocoaPods Plugin (správa iOS závislostí), XCFramework (distribuce nativních knihoven).
  • Skia (Flutter) a Impeller — renderovací enginy. Impeller je novější, rychlejší a řeší problémy jank na starších zařízeních.

Vývoj napříč platformami: Flutter Platform Channel a Method Channel

Flutter je framework Google pro vytváření nativních aplikací z jediné Dart kódové základny. Pro interakci s platformním kódem (Kotlin, Swift) používá Flutter Platform Channel. Je to most, přes který Dart kód volá nativní funkce a získává výsledek. Vývoj mobilních aplikací napříč platformami s Flutterem je nejrychleji rostoucím segmentem mobilního vývoje v letech 2025–2026.

Platform Channel (Method Channel)

Method Channel je hlavní komunikační kanál Flutter <-> Nativní. Na straně Dart: MethodChannel('com.example/channel').invokeMethod('getBatteryLevel'). Zpráva je kódována v StandardMethodCodec (binární). Na nativní straně je zaregistrován MethodChannel a zpracovává volání. MethodChannel je asynchronní — výsledek je vrácen přes Future. Alternativa: EventChannel pro toky událostí.

BasicMessageChannel je kanál nižší úrovně pro odesílání řetězců/bajtů bez struktury "metoda-argumenty". Používá se pro vlastní protokoly. Celé API Platform Channel prochází přes Flutter Engine, který serializuje/deserializuje zprávy.

FFI, Skia a Impeller

dart:ffi (Foreign Function Interface) — přímé volání C funkcí z Dartu bez platformních kanálů. FFI je rychlejší než Method Channel (0 režie serializace). Používá se pro výkonově náročné operace: zpracování zvuku, kryptografie, grafické enginy. Skia je renderovací engine Flutteru (2D grafika). Impeller je nový renderovací engine Flutteru, který nahrazuje Skii. Impeller kompiluje shadery předem (Ahead-of-Time), čímž eliminuje jank (zasekávání snímků) při prvních spuštěních. V IT Sectr jsme přešli na Impeller v roce 2025 — rozdíl v plynulosti animací je okamžitě patrný.

Vývoj napříč platformami s React Native: Bridge, Fabric, Hermes, JSI

React Native je framework Meta pro vývoj mobilních aplikací napříč platformami v JavaScript/TypeScript. React Native renderuje komponenty do nativních UI prvků. Architektura se vyvinula: starý Bridge → nový Fabric s JSI.

Fabric vs Bridge

Bridge je stará architektura React Native. Vlákno JS serializuje zprávy do JSON a odesílá je přes asynchronní frontu do nativního vlákna. To vytváří zpoždění (round-trip mostu ~1 ms). Fabric je nová architektura, kde vlákna JS a nativního UI komunikují synchronně přes JSI (JavaScript Interface). Fabric vkládá nativní pohledy přímo, bez mostu. Fabric je klíčovým milníkem ve vývoji napříč platformami, zrychluje renderování až 2x.

JSI (JavaScript Interface) je C++ API, které umožňuje JavaScriptu přímo volat nativní funkce a sdílet paměť. JSI nahradil JSON serializaci Bridge. Nová architektura založená na JSI je zásadním úspěchem ve vývoji napříč platformami, určujícím výkon mobilních aplikací. Turbo Module je nový způsob psaní nativních modulů pro React Native. Na rozdíl od starých Native Modules se Turbo Module načítá líně a používá JSI.

Hermes a Codegen

Hermes je JavaScript engine od Meta, optimalizovaný pro React Native. Hermes kompiluje JS kód do bajtkódu v době sestavení, čímž urychluje spouštění mobilních aplikací a snižuje spotřebu paměti při vývoji napříč platformami. Codegen je generátor nativního kódu založený na TypeScript typech. Codegen automaticky vytváří nativní moduly a JSI vazby, čímž snižuje ruční práci.

Parametr Flutter React Native KMP
JazykDartJavaScript/TypeScriptKotlin
ArchitekturaSkia/Impeller (vlastní renderování)Fabric + JSI (nativní UI)Nativní SDK (každý modul)
Nativní mostMethodChannel (Dart ↔ Nativní)JSI (JS ↔ C++ ↔ Nativní)expect/actual (Kotlin ↔ Nativní)
UIVlastní (Skia/Impeller)Nativní komponenty (UIKit/Android Views)Nativní UI (Jetpack Compose, SwiftUI)
Renderovací engineSkia nebo ImpellerNativní (UIView/View)Nativní

Flutter renderuje vše sám přes Skii/Impeller — to poskytuje jednotné UI na obou platformách. React Native používá nativní UI komponenty — vypadá jako nativní aplikace. KMP se nezabývá UI — sdílí pouze obchodní logiku, UI zůstává nativní. Volba závisí na prioritě: jednotné UI (Flutter) nebo maximální nativita (React Native/KMP).

Vývoj napříč platformami s Kotlin Multiplatform: expect/actual, Kotlin/Native

Kotlin Multiplatform (KMP) je technologie JetBrains pro sdílený kód mezi Androidem a iOS. Na rozdíl od Flutteru a React Native je KMP alternativním přístupem k vývoji napříč platformami: nenahrazuje UI, ale sdílí obchodní logiku, síťové požadavky, datové modely a repozitáře. UI zůstává nativní: Jetpack Compose pro Android, SwiftUI pro iOS.

expect/actual

expect — deklarace funkce nebo třídy ve společném modulu (commonMain), která má implementaci platformy. Vývoj napříč platformami s KMP používá expect/actual: actual je konkrétní implementace pro každou platformu (androidMain, iosMain). Příklad: expect fun getDeviceId(): String — actual na Androidu používá Settings.Secure, na iOS — UIDevice.current.identifierForVendor.

Kotlin/Native

Kotlin/Native — kompilátor Kotlin do nativního binárního souboru (iOS framework). Umožňuje spouštět Kotlin kód na iOS bez JVM. Kotlin/Native používá LLVM pro kompilaci, poskytuje výkon blízký Swift. Kotlin/JS — kompilace Kotlin do JavaScriptu pro webové a React Native projekty.

Nástroje pro sestavení: Gradle KTS, CocoaPods Plugin, XCFramework

Nástroje pro sestavení vývoje mobilních aplikací napříč platformami — most mezi kódem a konečným binárním souborem. Gradle KTS spravuje Android část, CocoaPods Plugin spravuje KMP iOS závislosti, XCFramework spravuje distribuci nativních knihoven.

Gradle KTS

Gradle KTS — konfigurace Gradle pomocí Kotlin DSL místo Groovy. KTS podporuje automatické doplňování v Android Studio, kontrolu typů a bezpečnost refaktorování. Příklad: plugins { id("com.android.application") } místo apply plugin: 'com.android.application'. Doporučeno pro všechny nové projekty.

CocoaPods Plugin a XCFramework

CocoaPods Plugin — Gradle plugin pro KMP, který publikuje sdílený modul jako CocoaPods pod. iOS vývojář jej přidá přes Podfile. XCFramework — formát distribuce binárních knihoven Apple. XCFramework obsahuje binární soubory pro více architektur (arm64, x86_64) a platforem (iOS, macOS, watchOS). V KMP je sdílený modul exportován jako XCFramework pro iOS.

Často kladené otázky

Co vybrat: Flutter nebo React Native v roce 2026?

Flutter nabízí lepší výkon (Skia/Impeller), jednotnou kódovou základnu UI a vysokou stabilitu při vývoji napříč platformami. React Native — obrovská komunita, snadný přechod z webového vývoje a flexibilita přes JSI. IT Sectr doporučuje Flutter pro projekty zaměřené na UI, React Native pokud projekt vyžaduje častý nativní kód.

Jak Flutter komunikuje s nativním kódem přes Platform Channel?

Flutter odešle zprávu přes MethodChannel na straně Dart. Zpráva je zakódována do binárního formátu a přenesena na nativní stranu (Kotlin/Swift), kde je zpracována a vrátí výsledek. Veškerá komunikace při vývoji mobilních aplikací je asynchronní.

Co je expect/actual v Kotlin Multiplatform?

expect je deklarace funkce nebo třídy ve společném kódu, která má implementaci platformy. actual je konkrétní implementace pro každou platformu (Android/iOS). Toto je mechanismus KMP pro podmíněnou kompilaci bez preprocesoru.

Jaký je rozdíl mezi Fabric a Bridge v React Native?

Bridge je stará architektura, kde jsou zprávy serializovány do JSON a přenášeny asynchronně frontou. Fabric je nová architektura se synchronním voláním nativních funkcí přes JSI, odstraňuje zpoždění a zlepšuje výkon mobilních aplikací.

Co je Hermes a proč ho React Native potřebuje?

Hermes je JavaScript engine od Meta, optimalizovaný pro React Native. Kompiluje JS do bajtkódu v době sestavení, čímž urychluje spouštění aplikace 2–3krát a snižuje spotřebu paměti.

Shrnutí

  • Flutter používá Platform Channel (MethodChannel) pro komunikaci s nativním kódem. FFI — pro přímé volání C funkcí bez režie.
  • React Native přešel z Bridge na Fabric + JSI. JSI umožňuje synchronní volání nativních funkcí, odstraňuje zpoždění mostu.
  • Kotlin Multiplatform používá expect/actual pro platformní kód. Kotlin/Native kompiluje společný kód do nativního iOS frameworku.
  • Vývoj mobilních aplikací napříč platformami s Flutterem používá Skia/Impeller, s React Native — JSI/Fabric, s KMP — expect/actual pro nativní kód.
  • Hermes — JS engine pro React Native. Urychluje spouštění a snižuje spotřebu paměti.
  • Gradle KTS — Kotlin DSL pro Gradle. CocoaPods Plugin a XCFramework — pro distribuci iOS binárních souborů ve vývoji napříč platformami.
  • Výběr frameworku: Flutter pro jednotné UI, React Native pro nativní UI s JS, KMP pro sdílení obchodní logiky s nativním UI.
  • Při výběru technologie vývoje mobilních aplikací napříč platformami zvažte požadavky na výkon a velikost týmu.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt