Kotlin Multiplatform Mobile — bu nədir, əsas anlayışlar və KMM arxitekturası

Müəllif: IT Sectr Dərc olunub: 2026-05-02 Oxuma vaxtı: 9 dəq

Kotlin Multiplatform Mobile (KMM) — bu, iOS və Android-də tətbiqlərdə Kotlin-də ümumi koddan istifadə etmək üçün JetBrains texnologiyasıdır, hər platformada native interfeysləri qoruyur. Hibrid freymvorklardan fərqli olaraq, KMM WebView istifadə etmir və interfeysi abstraksiyalar vasitəsilə render etmir — biznes məntiqi bir dəfə yazılır, istifadəçi interfeysi isə tam native qalır. JetBrains, 2025 məlumatlarına görə, KMM bütün dünyada 40 mindən çox komanda tərəfindən istifadə olunur. expect/actual — ümumi koddə platformadan asılı API-ləri bəyan etməyə imkan verən Kotlin-in əsas mexanizmidir.

Əsas məqamlar

  • KMM — Kotlin-də iOS və Android arasında biznes məntiqinin paylaşılması üçün JetBrains texnologiyası
  • expect/actual — hər ƏS üçün tətbiq ilə ümumi modulda platforma API-lərini bəyan etmə mexanizmi
  • Native UI — interfeys SwiftUI və Jetpack Compose-da ayrıca yazılır, WebView olmadan
  • Shared modulu — məlumat modelləri, şəbəkə sorğuları, validasiya və biznes qaydalarını ehtiva edir
  • Ktor və Kotlinx — ümumi koddə şəbəkə əlaqəsi və serializasiya üçün JetBrains kitabxanaları

Kotlin Multiplatform Mobile nədir?

Kotlin Multiplatform Mobile (KMM) — bu, mobil tətbiqin ümumi biznes məntiqini Kotlin-də yazmağa və kodu təkrarlamadan iOS və Android-də istifadə etməyə imkan verən texnologiyadır. Ionic və ya Cordova-dan fərqli olaraq, KMM interfeysi WebView-də render etmir — UI tam native qalır və SwiftUI (iOS) və Jetpack Compose (Android) ilə yazılır.

KMM JetBrains tərəfindən 2019-cu ildə Kotlin Multiplatform strategiyasının bir hissəsi kimi elan edilmişdir. Digər platformalararası həllərdən əsas fərq — freymvork UI-ni birləşdirməyə çalışmır, əksinə hər iki platforma üçün həqiqətən eyni olan kodun paylaşılmasına diqqət yetirir: şəbəkə sorğuları, məlumat modelləri, form validasiyası, biznes qaydaları və verilənlər bazaları ilə iş.

JetBrains Developer Survey (2025) məlumatlarına görə, KMM mobil tərtibatçıların 14%-i tərəfindən istifadə olunur və bu göstərici hər il 5% artır. Texnologiya yüksək performans və native istifadəçi təcrübəsi tələbləri olan şirkətlər tərəfindən seçilir, onlar üçün hibrid həllər qəbuledilməzdir.

KMM arxitekturası: shared modulu və platforma tətbiqləri

KMM arxitekturası üç moduldan ibarətdir: shared (Kotlin-də ümumi kod), iosApp (Swift-də native iOS tətbiqi) və androidApp (Kotlin-də native Android tətbiqi). Shared modulu Android üçün JAR-a və iOS üçün universal freymvorka (Apple Framework) kompilyasiya olunur.

Shared modulu: ümumi koda nə daxil edilir

Shared moduluna platformadan asılı olmayan bütün təbəqələr daxil edilir: Ktor Client-də şəbəkə təbəqəsi, kotlinx.serialization vasitəsilə serializasiya ilə məlumat modelləri, məlumatların idarə edilməsi üçün repozitoriyalar, form validasiyası və biznes qaydaları (məsələn, çatdırılma dəyərinin hesablanması və ya giriş hüquqlarının yoxlanılması).

Shared modulu Gradle Multiplatform Plugin istifadə edir və üç mənbə dəstini ehtiva edir: commonMain (ümumi kod), androidMain (Android-ə spesifik tətbiqlər) və iosMain (iOS-ə spesifik tətbiqlər). Kotlin/Native kompilyatoru ümumi kodu iOS üçün native kitabxanaya çevirir, bu da XCFramework vasitəsilə Swift layihəsinə qoşulur.

Platforma modulları

Android modulu — bu, Jetpack Compose və ya ViewBinding ilə Kotlin-də standart Android tətbiqidir. Shared modulu adi Gradle asılılığı kimi qoşulur və commonMain-dən bütün siniflər birbaşa əlçatandır.

iOS modulu — bu, Swift və ya Objective-C-də Xcode layihəsidir. Shared modulu CocoaPods, Swift Package Manager və ya XCFramework vasitəsilə qoşulur. Kotlin/Native Kotlin tiplərini ixrac etmək üçün Objective-C başlıqları yaradır, onları Swift-dən əlçatan edir.

KMM-də expect/actual mexanizmi

expect/actual — bu, ümumi koddə API bəyan etməyə (expect declaration) və onun tətbiqini hər platforma üçün ayrıca təmin etməyə (actual declaration) imkan verən Kotlin Multiplatform mexanizmidir. Kompilyator hər hədəf platforma üçün actual-ın mövcud olduğuna nəzarət edir.

expect/actual istifadəsinin tipik ssenariləri: saat qurşağı nəzərə alınmaqla cari vaxtın alınması, SharedPreferences (Android) / UserDefaults (iOS) ilə iş, kriptoqrafik funksiyalar və UUID generasiyası. Hər platformada öz sistem API-si istifadə olunur.

expect/actual olmadan vahid biznes məntiqi koduna sahib olmaq mümkün olmazdı, çünki fayl sistemi, şəbəkə və yaddaşla işləmək üçün API-lər iOS və Android arasında sistem çağırışları səviyyəsində fərqlənir. Mexanizm tərtibatçının platforma hissəsini tətbiq etməyi unutmamasına zəmanət verir.

Kamera və ya biometriya ilə iş kimi platforma çağırışları üçün KMM expect/actual kitabxanasını Cordova-ya bənzər plaginlərlə birlikdə təklif edir, lakin Kotlin/Native-də. JetBrains həmçinin tarixlərlə işi abstraksiya edən kotlinx-datetime kitabxanasını buraxmışdır.

KMM-də kod nümunələri

UUID generasiyası üçün expect-funksiya bəyannaməsi və onun iOS və Android üçün tətbiqi ilə KMM layihəsinin əsas strukturunu nəzərdən keçirək.

kotlin
// commonMain — ümumi bəyannamə
expect fun generateUUID(): String

// androidMain — Android üçün tətbiq
actual fun generateUUID(): String {
    return java.util.UUID.randomUUID().toString()
}

// iosMain — iOS üçün tətbiq
actual fun generateUUID(): String {
    return platform.Foundation.NSUUID().UUIDString
}

Ümumi koddə expect fun generateUUID() bəyan edilir. Android üçün java.util.UUID, iOS üçün Foundation freymvorkundan NSUUID istifadə olunur. Shared modulunun qalan kodunda bu funksiya platforma nəzərə alınmadan çağırılır.

Ümumi koddə Ktor Client istifadə edərək şəbəkə sorğusu nümunəsi:

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

Bu kod hər iki platformada dəyişiklik olmadan işləyir. Ktor Client Android altında OkHttp və iOS altında NSURLSession avtomatik olaraq istifadə edir, əlavə konfiqurasiya tələb olunmur. kotlinx.serialization vasitəsilə JSON serializasiyası da platformalararasıdır.

KMM-nin Flutter və React Native ilə müqayisəsi

KMM platformalararası texnologiyalar arasında unikal mövqe tutur, çünki Flutter və React Native-dən fərqli olaraq native UI-ni əvəz etməyə çalışmır. KMM — bu, interfeysi birləşdirmək üçün deyil, məntiqi paylaşmaq üçün həll yoludur.

KriteriyaKMMFlutterReact Native
UINative (SwiftUI / Jetpack Compose)Öz mühərriki (Skia)JavaScript → native komponentlər
DilKotlin (shared) + Swift / Kotlin (UI)DartJavaScript / TypeScript
PerformansMaksimal (native UI)Yüksək (öz renderinq)Orta (JS-Native körpüsü)
Kod paylaşımıBiznes məntiqi (40–70%)UI + məntiq (80–95%)UI + məntiq (70–90%)
Giriş həddiYüksək (iki dil)Orta (bir dil)Aşağı (veb tərtibatçıları)

KMM-nin əsas üstünlüyü — UI üzərində tam nəzarətdir. Tətbiq hər platformada native görünməli və davranmalıdırsa (məsələn, platforma animasiyaları ilə iOS TabBar və Android BottomNavigation istifadə etmək), KMM bunu təmin edən yeganə platformalararası həll yoludur.

Çatışmazlıq — komanda eyni anda Kotlin, Swift, Jetpack Compose və SwiftUI bilməlidir, bu da işə qəbulu çətinləşdirir. Flutter və React Native bir dil və bir freymvork bilmək tələb edir.

KMM tətbiqinin üstünlükləri və çətinlikləri

Kotlin Multiplatform Mobile — güclü texnologiyadır, lakin onun tətbiqi balanslaşdırılmış yanaşma tələb edir. Komandaların qarşılaşdığı əsas üstünlükləri və tipik çətinlikləri nəzərdən keçirək.

KMM-nin üstünlükləri

Birinci və əsas üstünlük — kod təkrarlanmasının azaldılması. JetBrains Case Studies (2024) məlumatlarına görə, KMM tətbiq edən komandalar şəbəkə təbəqəsi üçün təkrarlanan kodun həcmini 60–80%, ümumi biznes məntiqi üçün isə 40–50% azaldır. Bu, birbaşa inkişaf sürətinə və səhvlərin sayına təsir edir.

İkinci üstünlük — native tətbiqlər səviyyəsində performansdır. Hibrid freymvorklardan fərqli olaraq, KMM UI ilə sistem arasında abstraksiya təbəqələri əlavə etmir. Biznes məntiqi kodu, hər platforma üçün ayrıca Swift və ya Kotlin-də yazılsaydı, eyni sürətlə icra olunur.

Tətbiq çətinlikləri

Əsas çətinlik — komandanın ixtisası. Tərtibatçılar Kotlin (shared modulu üçün), həmçinin Swift və Jetpack Compass (UI üçün) bilməlidirlər. Universal mütəxəssis tapmaq çətindir, buna görə də adətən shared modulu birgə idarə edən Android və iOS tərtibatçılarından komanda formalaşdırılır.

İkinci çətinlik — alət dəsti. KMM Gradle, CocoaPods və ya Swift Package Manager konfiqurasiyası, həmçinin Xcode ilə inteqrasiya tələb edir. Layihənin ilkin mərhələlərində, xüsusilə C kitabxanaları ilə işləyərkən, kompilyasiya konfiqurasiyası ilə bağlı problemlər tez-tez olur.

Üçüncü çətinlik — debug-dur. Səhv Kotlin/Native və Swift-in qovşağında baş verdikdə, onun səbəbini monolit tətbiqdən daha çətin müəyyən etmək olar. JetBrains debug alətlərini daim təkmilləşdirir, lakin praktikada komandalar vaxtlarının 20%-ə qədərini infrastruktur tapşırıqlarına sərf etməlidirlər.

Tez-tez verilən suallar

KMM-dən Android olmadan yalnız iOS üçün istifadə etmək olar?

Bəli, KMM iOS-u yeganə hədəf platforma kimi dəstəkləyir. Shared modulu iOS freymvorkuna kompilyasiya olunur, bu da XCFramework vasitəsilə Swift layihəsinə qoşulur. Android modulu yaradıla bilməz. Bu, iOS tətbiqinin biznes məntiqi üçün Kotlin istifadə etmək istəyən komandalar üçün faydalıdır.

KMM Kotlin/Native-dən nə ilə fərqlənir?

Kotlin/Native — bu, Kotlin kodunu virtual maşın olmadan native binar fayla tərcümə edən kompilyatordur. KMM shared modulunu iOS üçün kompilyasiya etmək üçün Kotlin/Native istifadə edir. Android üçün KMM standart Kotlin/JVM kompilyatorundan istifadə edir. Kotlin/Native — KMM-nin texnoloji təməlidir.

KMM verilənlər bazaları ilə necə işləyir?

KMM-də lokal verilənlər bazaları ilə işləmək üçün SQLDelight istifadə olunur — SQL sorğularından Kotlin kodu yaradan platformalararası kitabxana. Android altında Android SQLite API, iOS altında Native SQLite (CFNetwork) vasitəsilə işləyir. Alternativ — MongoDB-dən Realm Kotlin SDK-dır.

KMM UI komponentlərini dəstəkləyir?

KMM standart olaraq UI komponentlərini ehtiva etmir — UI SwiftUI və Jetpack Compose-da ayrıca yazılır. Lakin, JetBrains-dən Compose Multiplatform kimi kitabxanalar mövcuddur ki, onlar native freymvorklar olmadan birbaşa iOS və Android-də Kotlin-də UI render etməyə imkan verir.

Hansı şirkətlər KMM-dən istehsalatda istifadə edir?

KMM böyük şirkətlər tərəfindən istifadə olunur: Netflix (tövsiyə məntiqinin paylaşılması), McDonald's (mobil tətbiq), VMWare (korporativ tətbiqlər) və Leroy Merlin (tikinti materialları tətbiqi). JetBrains ekosistemin inkişafına aktiv sərmayə qoyduğu üçün siyahı böyüyür.

Nəticə

  • KMM — native UI ilə Kotlin-də iOS və Android arasında biznes məntiqinin paylaşılması üçün JetBrains texnologiyası
  • Arxitektura shared modulunu və expect/actual vasitəsilə platforma tətbiqlərini əhatə edir
  • Shared modulu şəbəkə əlaqəsi (Ktor), modellər (kotlinx.serialization) və biznes qaydalarını ehtiva edir
  • expect/actual — ümumi koddə platformadan asılı tətbiqlər üçün əsas mexanizm
  • Performans native tətbiqlər səviyyəsindədir, çünki UI abstraksiyalardan istifadə etmir
  • Çətinliklər komandanın ixtisasına yüksək tələblər və kompilyasiya infrastrukturunun konfiqurasiyasını əhatə edir
  • Seçim KMM native UX və yüksək məntiq paylaşım faizinin kritik olduğu layihələr üçün əsaslandırılmışdır

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun