Kotlin Multiplatform Mobile — mi ez, kulcsfogalmak és a KMM architektúrája

Szerző: IT Sectr Megjelenés: 2026-05-02 Olvasási idő: 9 perc

Kotlin Multiplatform Mobile (KMM) — a JetBrains technológiája a közös kód Kotlinban történő használatára iOS és Android alkalmazásokban, a natív felületek megtartásával minden platformon. A hibrid keretrendszerekkel ellentétben a KMM nem használ WebView-t és nem rendereli a felületet absztrakciókon keresztül — az üzleti logika egyszer kerül megírásra, a felhasználói felület pedig teljesen natív marad. A JetBrains, 2025 adatai szerint a KMM-t több mint 40 ezer csapat használja világszerte. expect/actual — a Kotlin kulcsmechanizmusa, amely lehetővé teszi platformfüggő API-k deklarálását a közös kódban.

Főbb pontok

  • KMM — JetBrains technológia az üzleti logika megosztására iOS és Android között Kotlinban
  • expect/actual — platform API-k deklarálásának mechanizmusa a közös modulban implementációval minden operációs rendszerhez
  • Natív UI — a felület külön kerül megírásra SwiftUI és Jetpack Compose keretrendszerekben, WebView nélkül
  • Shared modul — adatmodelleket, hálózati kéréseket, validációt és üzleti szabályokat tartalmaz
  • Ktor és Kotlinx — JetBrains könyvtárak hálózati kommunikációhoz és szerializációhoz a közös kódban

Mi az a Kotlin Multiplatform Mobile?

Kotlin Multiplatform Mobile (KMM) — egy technológia, amely lehetővé teszi egy mobilalkalmazás közös üzleti logikájának Kotlinban történő megírását és annak iOS és Android rendszereken történő használatát kódduplikálás nélkül. Az Ionic vagy Cordova rendszerekkel ellentétben a KMM nem rendereli a felületet WebView-ban — a UI teljesen natív marad, és SwiftUI (iOS) és Jetpack Compose (Android) keretrendszerekben íródik.

A KMM-t a JetBrains 2019-ben jelentette be a Kotlin Multiplatform stratégia részeként. A legfontosabb különbség más cross-platform megoldásokhoz képest — a keretrendszer nem próbálja egységesíteni a UI-t, hanem pontosan annak a kódnak a megosztására összpontosít, amely valóban azonos mindkét platformon: hálózati kérések, adatmodellek, űrlapvalidáció, üzleti szabályok és adatbázisokkal való munka.

A JetBrains Developer Survey (2025) szerint a KMM-t a mobilfejlesztők 14%-a használja, és ez az arány évente 5%-kal nő. A technológiát olyan vállalatok választják, amelyek magas követelményeket támasztanak a teljesítmény és a natív felhasználói élmény iránt, és számukra a hibrid megoldások elfogadhatatlanok.

A KMM architektúrája: shared modul és platform implementációk

A KMM architektúrája három modulból áll: shared (közös kód Kotlinban), iosApp (natív iOS alkalmazás Swiftben) és androidApp (natív Android alkalmazás Kotlinban). A shared modul JAR formátumba fordításra kerül Androidhoz és univerzális keretrendszerbe (Apple Framework) iOS-hez.

Shared modul: mi kerül a közös kódba

A shared modulba kerül az összes platformfüggetlen réteg: a hálózati réteg Ktor Client segítségével, adatmodellek szerializációval kotlinx.serialization segítségével, adattárak az adatok kezelésére, űrlapvalidáció és üzleti szabályok (például szállítási költség kiszámítása vagy hozzáférési jogosultságok ellenőrzése).

A shared modul a Gradle Multiplatform Plugin-t használja, és három forráskészletet tartalmaz: commonMain (közös kód), androidMain (Android-specifikus implementációk) és iosMain (iOS-specifikus implementációk). A Kotlin/Native fordító a közös kódot natív könyvtárrá alakítja iOS számára, amely XCFramework segítségével csatlakozik a Swift projekthez.

Platform modulok

Az Android modul — egy szabványos Android alkalmazás Kotlinban Jetpack Compose vagy ViewBinding segítségével. A shared modul szokásos Gradle függőségként csatlakozik, és a commonMain összes osztálya közvetlenül elérhető.

Az iOS modul — egy Xcode projekt Swiftben vagy Objective-C-ben. A shared modul CocoaPods, Swift Package Manager vagy XCFramework segítségével csatlakozik. A Kotlin/Native Objective-C fejléceket generál a Kotlin típusok exportálásához, így azok elérhetővé válnak Swiftből.

Az expect/actual mechanizmus a KMM-ben

expect/actual — egy Kotlin Multiplatform mechanizmus, amely lehetővé teszi egy API deklarálását a közös kódban (expect declaration) és annak implementációjának külön szolgáltatását minden platformhoz (actual declaration). A fordító felügyeli, hogy az actual létezzen minden célplatformhoz.

Az expect/actual tipikus használati esetei: aktuális idő lekérése időzóna figyelembevételével, munka SharedPreferences (Android) / UserDefaults (iOS) rendszerekkel, kriptográfiai függvények és UUID generálás. Minden platformon a saját rendszer API-ja kerül használatra.

Expect/actual nélkül lehetetlen lenne egységes üzleti logikai kód, mivel a fájlrendszerrel, hálózattal és tárolással való munkához szükséges API-k eltérnek az iOS és Android között rendszerhívások szintjén. A mechanizmus garantálja, hogy a fejlesztő nem felejti el implementálni a platform részt.

A platformhívásokhoz, mint a kamerával vagy biometriával való munka, a KMM az expect/actual könyvtárat kínálja a Cordova-hoz hasonló bővítményekkel kombinálva, de Kotlin/Native környezetben. A JetBrains kiadta a kotlinx-datetime könyvtárat is, amely elvonttá teszi a dátumokkal való munkát.

Kódpéldák a KMM-ben

Vizsgáljuk meg egy KMM projekt alapstruktúráját egy UUID generálására szolgáló expect függvény deklarálásával és annak iOS és Android implementációjával.

kotlin
// commonMain — közös deklaráció
expect fun generateUUID(): String

// androidMain — implementáció Androidhoz
actual fun generateUUID(): String {
    return java.util.UUID.randomUUID().toString()
}

// iosMain — implementáció iOS-hez
actual fun generateUUID(): String {
    return platform.Foundation.NSUUID().UUIDString
}

A közös kódban deklarálásra kerül az expect fun generateUUID(). Android esetén a java.util.UUID, iOS esetén a Foundation keretrendszer NSUUID osztálya használatos. A shared modul többi kódjában ez a függvény a platform figyelembevétele nélkül hívható meg.

Példa hálózati kérésre Ktor Client használatával a közös kódban:

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())
    }
}

Ez a kód mindkét platformon változtatás nélkül működik. A Ktor Client automatikusan használja az OkHttp-t Androidon és az NSURLSession-t iOS-en, további konfiguráció nélkül. A JSON szerializáció a kotlinx.serialization segítségével szintén cross-platform.

A KMM összehasonlítása Flutter és React Native keretrendszerekkel

A KMM egyedülálló helyet foglal el a cross-platform technológiák között, mert nem próbálja helyettesíteni a natív UI-t, ellentétben a Flutter és React Native rendszerekkel. KMM — egy megoldás a logika megosztására, nem a felület egységesítésére.

KritériumKMMFlutterReact Native
UINatív (SwiftUI / Jetpack Compose)Saját motor (Skia)JavaScript → natív komponensek
NyelvKotlin (shared) + Swift / Kotlin (UI)DartJavaScript / TypeScript
TeljesítményMaximális (natív UI)Magas (saját renderelés)Közepes (JS-Native híd)
KódmegosztásÜzleti logika (40–70%)UI + logika (80–95%)UI + logika (70–90%)
Belépési küszöbMagas (két nyelv)Közepes (egy nyelv)Alacsony (web fejlesztők)

A KMM fő előnye — teljes kontroll a UI felett. Ha az alkalmazásnak natívan kell kinéznie és viselkednie minden platformon (például iOS TabBar és Android BottomNavigation használata platform animációkkal), a KMM az egyetlen cross-platform megoldás, amely ezt megkerülő megoldások nélkül biztosítja.

Hátrány — a csapatnak egyszerre kell ismernie a Kotlin, Swift, Jetpack Compose és SwiftUI nyelveket, ami megnehezíti a felvételt. A Flutter és React Native egy nyelv és egy keretrendszer ismeretét igényli.

A KMM bevezetésének előnyei és kihívásai

Kotlin Multiplatform Mobile — egy erőteljes technológia, de bevezetése kiegyensúlyozott megközelítést igényel. Tekintsük át a legfontosabb előnyöket és tipikus kihívásokat, amelyekkel a csapatok szembesülnek.

A KMM előnyei

Az első és legfontosabb előny — a kódduplikáció csökkentése. A JetBrains Case Studies (2024) szerint a KMM-t bevezető csapatok 60–80%-kal csökkentik a duplikált kód mennyiségét a hálózati rétegben és 40–50%-kal az üzleti logika egészében. Ez közvetlenül befolyásolja a fejlesztési sebességet és a hibák számát.

A második előny — natív alkalmazások szintjén nyújtott teljesítmény. A hibrid keretrendszerekkel ellentétben a KMM nem ad hozzá absztrakciós rétegeket a UI és a rendszer között. Az üzleti logika kódja ugyanolyan gyorsan fut, mintha Swiftben vagy Kotlinban külön-külön lett volna megírva minden platformhoz.

Bevezetési kihívások

A fő kihívás — a csapat képzettsége. A fejlesztőknek ismerniük kell a Kotlin (a shared modulhoz), valamint a Swift és Jetpack Compose (a UI-hoz) nyelveket. Egy univerzális szakember megtalálása nehéz, ezért általában Android és iOS fejlesztőkből álló csapatot hoznak létre, akik közösen kezelik a shared modult.

A második kihívás — az eszköztár. A KMM megköveteli a Gradle, CocoaPods vagy Swift Package Manager konfigurálását, valamint az Xcode integrációt. A projekt korai szakaszaiban gyakoriak a build konfigurációs problémák, különösen C könyvtárak használatakor.

A harmadik kihívás — a hibakeresés. Amikor egy hiba a Kotlin/Native és a Swift határán jelenik meg, az ok meghatározása nehezebb, mint egy monolit alkalmazásban. A JetBrains folyamatosan fejleszti a hibakereső eszközöket, de a gyakorlatban a csapatoknak az idő akár 20%-át is infrastrukturális feladatokra kell fordítaniuk.

Gyakran ismételt kérdések

Használható-e a KMM iOS-re Android nélkül?

Igen, a KMM támogatja az iOS-t egyetlen célplatformként. A shared modul iOS keretrendszerré fordul, amely XCFramework segítségével csatlakozik a Swift projekthez. Az Android modult nem kell létrehozni. Ez hasznos azoknak a csapatoknak, amelyek Kotlin-t szeretnének használni egy iOS alkalmazás üzleti logikájához.

Miben különbözik a KMM a Kotlin/Native-tól?

Kotlin/Native — egy fordító, amely Kotlin kódot natív bináris fájllá alakít virtuális gép nélkül. A KMM a Kotlin/Native-t használja a shared modul iOS-hez történő fordításához. Android esetén a KMM a szabványos Kotlin/JVM fordítót használja. A Kotlin/Native — a KMM technológiai alapja.

Hogyan működik a KMM adatbázisokkal?

A helyi adatbázisokkal való munkához a KMM-ben az SQLDelight-ot használják — egy cross-platform könyvtárat, amely Kotlin kódot generál SQL lekérdezésekből. Android alatt az Android SQLite API-n, iOS alatt a Native SQLite-on (CFNetwork) keresztül működik. Alternatíva — a Realm Kotlin SDK a MongoDB-től.

Támogatja-e a KMM az UI komponenseket?

A KMM alapértelmezés szerint nem tartalmaz UI komponenseket — a UI külön kerül megírásra SwiftUI és Jetpack Compose keretrendszerekben. Vannak azonban olyan könyvtárak, mint a Compose Multiplatform (a JetBrains-től), amelyek lehetővé teszik a UI közvetlen Kotlinban történő renderelését iOS-en és Androidon natív keretrendszerek nélkül.

Mely vállalatok használják a KMM-t élesben?

A KMM-t nagyvállalatok használják: Netflix (ajánlási logika megosztása), McDonald's (mobilalkalmazás), VMWare (vállalati alkalmazások) és Leroy Merlin (építőanyag-alkalmazás). A lista bővül, mivel a JetBrains aktívan fektet be az ökoszisztéma fejlesztésébe.

Összefoglalás

  • KMM — JetBrains technológia az üzleti logika megosztására iOS és Android között Kotlinban natív UI-val
  • Architektúra magában foglalja a shared modult és platform implementációkat expect/actual segítségével
  • Shared modul hálózati kommunikációt (Ktor), modelleket (kotlinx.serialization) és üzleti szabályokat tartalmaz
  • expect/actual — kulcsmechanizmus platformfüggő implementációkhoz a közös kódban
  • Teljesítmény natív alkalmazások szintjén, mivel a UI nem használ absztrakciókat
  • Kihívások magas csapat képzettségi követelményeket és build infrastruktúra konfigurációt foglalnak magukban
  • Választás a KMM olyan projektekhez indokolt, ahol a natív UX és a magas logikamegosztási arány kritikus

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.

Projekt megbeszélése

Olvassa el is