Kotlin Multiplatform Mobile — co to je, klíčové pojmy a architektura KMM

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

Kotlin Multiplatform Mobile (KMM) — je technologie od JetBrains pro použití společného kódu v Kotlinu v aplikacích pro iOS a Android při zachování nativních UI na každé platformě. Na rozdíl od hybridních frameworků KMM nepoužívá WebView a nevykresluje rozhraní pomocí abstrakcí — obchodní logika se píše jednou a uživatelské rozhraní zůstává plně nativní. Podle údajů JetBrains, 2025 používá KMM více než 40 tisíc týmů po celém světě. expect/actual — klíčový mechanismus Kotlinu, který umožňuje deklarovat platformově závislá API ve společném kódu.

Hlavní body

  • KMM — technologie JetBrains pro sdílení obchodní logiky mezi iOS a Android v Kotlinu
  • expect/actual — mechanismus deklarace platformových API ve společném modulu s implementací pro každý OS
  • Nativní UI — rozhraní se píše samostatně ve SwiftUI a Jetpack Compose, bez WebView
  • Shared modul — obsahuje datové modely, síťové požadavky, validaci a obchodní pravidla
  • Ktor a Kotlinx — knihovny JetBrains pro síťovou komunikaci a serializaci ve společném kódu

Co je Kotlin Multiplatform Mobile?

Kotlin Multiplatform Mobile (KMM) — je technologie, která umožňuje psát společnou obchodní logiku mobilní aplikace v Kotlinu a používat ji na iOS a Android bez duplikování kódu. Na rozdíl od Ionic nebo Cordova KMM nevykresluje rozhraní ve WebView — UI zůstává plně nativní a píše se ve SwiftUI (iOS) a Jetpack Compose (Android).

KMM byl oznámen společností JetBrains v roce 2019 jako součást strategie Kotlin Multiplatform. Klíčový rozdíl oproti jiným cross-platform řešením — framework se nesnaží sjednotit UI, ale zaměřuje se na sdílení právě toho kódu, který je skutečně stejný pro obě platformy: síťových požadavků, datových modelů, validace formulářů, obchodních pravidel a práce s databázemi.

Podle JetBrains Developer Survey (2025) používá KMM 14% mobilních vývojářů a tento ukazatel roste o 5% ročně. Technologii si vybírají společnosti s vysokými nároky na výkon a nativní uživatelský zážitek, pro které jsou hybridní řešení nepřijatelná.

Architektura KMM: shared modul a platformové implementace

Architektura KMM se skládá ze tří modulů: shared (společný kód v Kotlinu), iosApp (nativní iOS aplikace ve Swiftu) a androidApp (nativní Android aplikace v Kotlinu). Shared modul je kompilován do JAR pro Android a do univerzálního frameworku (Apple Framework) pro iOS.

Shared modul: co se vkládá do společného kódu

Do shared modulu vstupují všechny vrstvy nezávislé na platformě: síťová vrstva na Ktor Client, datové modely se serializací přes kotlinx.serialization, repozitáře pro správu dat, validace formulářů a obchodní pravidla (například výpočet ceny dopravy nebo kontrola přístupových práv).

Shared modul používá Gradle Multiplatform Plugin a obsahuje tři sady zdrojů: commonMain (společný kód), androidMain (implementace specifické pro Android) a iosMain (implementace specifické pro iOS). Kompilátor Kotlin/Native převádí společný kód na nativní knihovnu pro iOS, která se připojuje k projektu Swift přes XCFramework.

Platformové moduly

Android modul — je standardní Android aplikace v Kotlinu s Jetpack Compose nebo ViewBinding. Shared modul se připojuje jako běžná závislost Gradle a všechny třídy z commonMain jsou přímo dostupné.

iOS modul — je projekt Xcode ve Swiftu nebo Objective-C. Shared modul se připojuje přes CocoaPods, Swift Package Manager nebo XCFramework. Kotlin/Native generuje Objective-C hlavičky pro export typů Kotlin, čímž je zpřístupňuje ze Swiftu.

Mechanismus expect/actual v KMM

expect/actual — je mechanismus Kotlin Multiplatform, který umožňuje deklarovat API ve společném kódu (expect declaration) a poskytnout jeho implementaci zvlášť pro každou platformu (actual declaration). Kompilátor hlídá, aby actual existoval pro každou cílovou platformu.

Typické scénáře použití expect/actual: získání aktuálního času s ohledem na časové pásmo, práce s SharedPreferences (Android) / UserDefaults (iOS), kryptografické funkce a generování UUID. Na každé platformě se používá vlastní systémové API.

Bez expect/actual by nebylo možné mít jednotný kód obchodní logiky, protože API pro práci se souborovým systémem, sítí a úložištěm se liší mezi iOS a Android na úrovni systémových volání. Mechanismus zaručuje, že vývojář nezapomene implementovat platformovou část.

Pro platformová volání, jako je práce s kamerou nebo biometrií, nabízí KMM knihovnu expect/actual v kombinaci s pluginy podobnými Cordově, ale v Kotlin/Native. JetBrains také vydala knihovnu kotlinx-datetime, která abstrahuje práci s daty.

Příklady kódu v KMM

Podívejme se na základní strukturu projektu KMM s deklarací expect funkce pro generování UUID a její implementací pro iOS a Android.

kotlin
// commonMain — společná deklarace
expect fun generateUUID(): String

// androidMain — implementace pro Android
actual fun generateUUID(): String {
    return java.util.UUID.randomUUID().toString()
}

// iosMain — implementace pro iOS
actual fun generateUUID(): String {
    return platform.Foundation.NSUUID().UUIDString
}

Ve společném kódu se deklaruje expect fun generateUUID(). Pro Android se používá java.util.UUID, pro iOS — NSUUID z frameworku Foundation. Ve zbytku kódu shared modulu je tato funkce volána bez ohledu na platformu.

Příklad síťového požadavku s použitím Ktor Client ve společném kódu:

kotlin
import io.ktor.client.*
import io.ktor.client.request.*
import io.ktor.client.statement.*
import kotlinx.serialization.*
import kotlinx.serialization.json.*

@Serializable
data class User(
    val id: Int,
    val name: String
)

class UserRepository {
    private val client = HttpClient()

    suspend fun getUser(id: Int): User {
        val response: HttpStatement =
            client.get("https://api.example.com/users/$id")
        return Json.decodeFromString(response.bodyAsText())
    }
}

Tento kód funguje na obou platformách beze změn. Ktor Client automaticky používá OkHttp na Androidu a NSURLSession na iOS, bez dodatečné konfigurace. JSON serializace přes kotlinx.serialization je také cross-platform.

Srovnání KMM s Flutter a React Native

KMM zaujímá jedinečnou pozici mezi cross-platform technologiemi, protože se nesnaží nahradit nativní UI na rozdíl od Flutter a React Native. KMM — je řešení pro sdílení logiky, nikoli pro sjednocení rozhraní.

KritériumKMMFlutterReact Native
UINativní (SwiftUI / Jetpack Compose)Vlastní engine (Skia)JavaScript → nativní komponenty
JazykKotlin (shared) + Swift / Kotlin (UI)DartJavaScript / TypeScript
VýkonMaximální (nativní UI)Vysoký (vlastní vykreslování)Střední (most JS-Native)
Sdílení kóduObchodní logika (40–70%)UI + logika (80–95%)UI + logika (70–90%)
Práh vstupuVysoký (dva jazyky)Střední (jeden jazyk)Nízký (weboví vývojáři)

Hlavní výhoda KMM — plná kontrola nad UI. Pokud má aplikace vypadat a chovat se nativně na každé platformě (například používat iOS TabBar a Android BottomNavigation s platformovými animacemi), je KMM jediné cross-platform řešení, které to zajišťuje bez obcházení.

Nevýhoda — tým musí současně ovládat Kotlin, Swift, Jetpack Compose a SwiftUI, což komplikuje nábor. Flutter a React Native vyžadují znalost jednoho jazyka a jednoho frameworku.

Výhody a obtíže zavedení KMM

Kotlin Multiplatform Mobile — je výkonná technologie, ale její zavedení vyžaduje vyvážený přístup. Podívejme se na klíčové výhody a typické obtíže, se kterými se týmy potýkají.

Výhody KMM

První a hlavní výhoda — snižení duplicity kódu. Podle JetBrains Case Studies (2024) týmy, které zavedly KMM, snižují objem duplicitního kódu o 60–80% pro síťovou vrstvu a o 40–50% pro obchodní logiku celkově. To přímo ovlivňuje rychlost vývoje a počet chyb.

Druhá výhoda — výkon na úrovni nativních aplikací. Na rozdíl od hybridních frameworků KMM nepřidává vrstvy abstrakce mezi UI a systém. Kód obchodní logiky se provádí stejně rychle, jako kdyby byl napsán ve Swiftu nebo Kotlinu pro každou platformu zvlášť.

Obtíže zavedení

Hlavní obtíž — kvalifikace týmu. Vývojáři musí znát Kotlin (pro shared modul), stejně jako Swift a Jetpack Compose (pro UI). Najít univerzálního specialistu je obtížné, proto se obvykle vytváří tým z Android a iOS vývojářů, kteří společně spravují shared modul.

Druhá obtíž — nástroje. KMM vyžaduje konfiguraci Gradle, CocoaPods nebo Swift Package Manager, stejně jako integraci s Xcode. V raných fázích projektu jsou časté problémy s konfigurací sestavení, zejména při práci s C knihovnami.

Třetí obtíž — ladění. Když se chyba objeví na rozhraní Kotlin/Native a Swift, je určení její příčiny obtížnější než v monolitické aplikaci. JetBrains neustále vylepšuje nástroje pro ladění, ale v praxi musí týmy věnovat až 20% času infrastrukturním úkolům.

Často kladené otázky

Lze použít KMM pro iOS bez Androidu?

Ano, KMM podporuje iOS jako jedinou cílovou platformu. Shared modul je zkompilován do iOS frameworku, který se připojuje k projektu Swift přes XCFramework. Android modul není nutné vytvářet. To je užitečné pro týmy, které chtějí používat Kotlin pro obchodní logiku iOS aplikace.

Čím se KMM liší od Kotlin/Native?

Kotlin/Native — je kompilátor, který překládá Kotlin kód do nativního binárního souboru bez virtuálního stroje. KMM používá Kotlin/Native pro kompilaci shared modulu pro iOS. Pro Android KMM používá standardní Kotlin/JVM kompilátor. Kotlin/Native — je technologický základ KMM.

Jak KMM pracuje s databázemi?

Pro práci s lokálními databázemi v KMM se používá SQLDelight — cross-platform knihovna generující Kotlin kód z SQL dotazů. Na Androidu funguje přes Android SQLite API, na iOS přes Native SQLite (CFNetwork). Alternativa — Realm Kotlin SDK od MongoDB.

Podporuje KMM UI komponenty?

KMM standardně neobsahuje UI komponenty — UI se píše samostatně ve SwiftUI a Jetpack Compose. Existují však knihovny jako Compose Multiplatform (od JetBrains), které umožňují vykreslovat UI v Kotlinu přímo na iOS a Android bez nativních frameworků.

Které společnosti používají KMM v produkci?

KMM používají velké společnosti: Netflix (sdílení logiky doporučení), McDonald's (mobilní aplikace), VMWare (podnikové aplikace) a Leroy Merlin (aplikace pro stavební materiály). Seznam roste, protože JetBrains aktivně investuje do rozvoje ekosystému.

Shrnutí

  • KMM — technologie JetBrains pro sdílení obchodní logiky mezi iOS a Android v Kotlinu s nativním UI
  • Architektura zahrnuje shared modul a platformové implementace přes expect/actual
  • Shared modul obsahuje síťovou komunikaci (Ktor), modely (kotlinx.serialization) a obchodní pravidla
  • expect/actual — klíčový mechanismus pro platformově závislé implementace ve společném kódu
  • Výkon na úrovni nativních aplikací, protože UI nepoužívá abstrakce
  • Obtíže zahrnují vysoké nároky na kvalifikaci týmu a konfiguraci infrastruktury sestavení
  • Volba KMM je odůvodněná pro projekty, kde je nativní UX a vysoké procento sdílení logiky kritické

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

Přečtěte si také