Kotlin Multiplatform Mobile (KMM) — bu JetBrains-dan iOS va Android ilovalarida Kotlin-da umumiy koddan foydalanish texnologiyasi bo'lib, har bir platformada mahalliy interfeyslarni saqlaydi. Gibrid freymvorklardan farqli o'laroq, KMM WebView-dan foydalanmaydi va interfeysni abstraksiyalar orqali render qilmaydi — biznes mantiqi bir marta yoziladi, foydalanuvchi interfeysi esa to'liq mahalliy bo'lib qoladi. JetBrains, 2025 ma'lumotlariga ko'ra, KMM butun dunyo bo'ylab 40 mingdan ortiq jamoa tomonidan qo'llaniladi. expect/actual — umumiy kodda platformaga bog'liq API-larni e'lon qilish imkonini beruvchi Kotlin-ning asosiy mexanizmidir.
Asosiy ma'lumotlar
Kotlin Multiplatform Mobile (KMM) — bu mobil ilovaning umumiy biznes mantiqini Kotlin-da yozish va kodni takrorlamasdan iOS va Android-da ishlatish imkonini beruvchi texnologiyadir. Ionic yoki Cordova-dan farqli o'laroq, KMM interfeysni WebView-da render qilmaydi — UI to'liq mahalliy bo'lib qoladi va SwiftUI (iOS) va Jetpack Compose (Android) da yoziladi.
KMM JetBrains tomonidan 2019-yilda Kotlin Multiplatform strategiyasining bir qismi sifatida e'lon qilingan. Boshqa platformalararo yechimlardan asosiy farq — freymvork UI-ni birlashtirishga urinmaydi, balki ikkala platforma uchun haqiqatan ham bir xil bo'lgan kodni ulashishga e'tibor qaratadi: tarmoq so'rovlari, ma'lumotlar modellari, form validatsiyasi, biznes qoidalari va ma'lumotlar bazalari bilan ishlash.
JetBrains Developer Survey (2025) ma'lumotlariga ko'ra, KMM mobil dasturchilarning 14% tomonidan qo'llaniladi va bu ko'rsatkich har yili 5% ga o'sadi. Texnologiya yuqori unumdorlik va mahalliy foydalanuvchi tajribasiga talablar yuqori bo'lgan kompaniyalar tomonidan tanlanadi, ular uchun gibrid yechimlar qabul qilinishi mumkin emas.
KMM arxitekturasi uch moduldan iborat: shared (Kotlin-da umumiy kod), iosApp (Swift-da mahalliy iOS ilovasi) va androidApp (Kotlin-da mahalliy Android ilovasi). Shared moduli Android uchun JAR-ga va iOS uchun universal freymvorkka (Apple Framework) kompilyatsiya qilinadi.
Shared moduliga platformaga bog'liq bo'lmagan barcha qatlamlar kiritiladi: Ktor Client-da tarmoq qatlami, kotlinx.serialization orqali serializatsiya bilan ma'lumotlar modellari, ma'lumotlarni boshqarish uchun repository-lar, form validatsiyasi va biznes qoidalari (masalan, yetkazib berish narxini hisoblash yoki kirish huquqlarini tekshirish).
Shared moduli Gradle Multiplatform Plugin-dan foydalanadi va uchta manba to'plamini o'z ichiga oladi: commonMain (umumiy kod), androidMain (Android-ga xos tatbiqlar) va iosMain (iOS-ga xos tatbiqlar). Kotlin/Native kompilyatori umumiy kodni iOS uchun mahalliy kutubxonaga aylantiradi, u XCFramework orqali Swift loyihasiga ulanadi.
Android moduli — bu Jetpack Compose yoki ViewBinding bilan Kotlin-da standart Android ilovasi. Shared moduli oddiy Gradle bog'liqligi sifatida ulanadi va commonMain-dagi barcha sinflar to'g'ridan-to'g'ri mavjud.
iOS moduli — bu Swift yoki Objective-C-da Xcode loyihasi. Shared moduli CocoaPods, Swift Package Manager yoki XCFramework orqali ulanadi. Kotlin/Native Kotlin turlarini eksport qilish uchun Objective-C sarlavhalarini yaratadi, ularni Swift-dan foydalanish mumkin qiladi.
expect/actual — bu umumiy kodda API e'lon qilish (expect declaration) va uni har bir platforma uchun alohida tatbiq qilish (actual declaration) imkonini beruvchi Kotlin Multiplatform mexanizmidir. Kompilyator har bir maqsadli platforma uchun actual mavjudligini nazorat qiladi.
expect/actual dan foydalanishning odatiy stsenariylari: vaqt mintaqasini hisobga olgan holda joriy vaqtni olish, SharedPreferences (Android) / UserDefaults (iOS) bilan ishlash, kriptografik funksiyalar va UUID generatsiyasi. Har bir platformada o'z tizim API-si ishlatiladi.
expect/actual bo'lmasa, yagona biznes mantiqi kodiga ega bo'lish mumkin bo'lmaydi, chunki fayl tizimi, tarmoq va xotira bilan ishlash uchun API-lar iOS va Android o'rtasida tizim chaqiruvlari darajasida farqlanadi. Mexanizm dasturchining platforma qismini tatbiq qilishni unutmasligini kafolatlaydi.
Kamera yoki biometriya bilan ishlash kabi platforma chaqiruvlari uchun KMM expect/actual kutubxonasini Cordova-ga o'xshash plaginlar bilan birgalikda taklif qiladi, ammo Kotlin/Native-da. JetBrains shuningdek, sanalar bilan ishlashni abstraksiya qiluvchi kotlinx-datetime kutubxonasini chiqardi.
UUID generatsiyasi uchun expect-funksiya e'loni va uning iOS va Android uchun tatbiqi bilan KMM loyihasining asosiy tuzilishini ko'rib chiqamiz.
// commonMain — umumiy e'lon
expect fun generateUUID(): String
// androidMain — Android uchun tatbiq
actual fun generateUUID(): String {
return java.util.UUID.randomUUID().toString()
}
// iosMain — iOS uchun tatbiq
actual fun generateUUID(): String {
return platform.Foundation.NSUUID().UUIDString
}
Umumiy kodda expect fun generateUUID() e'lon qilinadi. Android uchun java.util.UUID, iOS uchun Foundation freymvorkidan NSUUID ishlatiladi. Shared modulining qolgan kodida bu funksiya platformadan qat'iy nazar chaqiriladi.
Umumiy kodda Ktor Client yordamida tarmoq so'rovi namunasi:
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 ikkala platformada o'zgarishsiz ishlaydi. Ktor Client Android ostida OkHttp va iOS ostida NSURLSession dan avtomatik ravishda foydalanadi, qo'shimcha konfiguratsiya talab qilinmaydi. kotlinx.serialization orqali JSON serializatsiyasi ham platformalararodir.
KMM platformalararo texnologiyalar orasida noyob o'rinni egallaydi, chunki Flutter va React Native-dan farqli o'laroq, mahalliy UI-ni almashtirishga urinmaydi. KMM — bu interfeysni birlashtirish uchun emas, balki mantiqni ulashish uchun yechimdir.
| Mezon | KMM | Flutter | React Native |
|---|---|---|---|
| UI | Mahalliy (SwiftUI / Jetpack Compose) | O'z dvigateli (Skia) | JavaScript → mahalliy komponentlar |
| Til | Kotlin (shared) + Swift / Kotlin (UI) | Dart | JavaScript / TypeScript |
| Unumdorlik | Maksimal (mahalliy UI) | Yuqori (o'z render) | O'rtacha (JS-Native ko'prigi) |
| Kod ulashish | Biznes mantiqi (40–70%) | UI + mantiq (80–95%) | UI + mantiq (70–90%) |
| Kirish chegarasi | Yuqori (ikki til) | O'rtacha (bir til) | Past (veb dasturchilar) |
KMM ning asosiy afzalligi — UI ustidan to'liq nazorat. Agar ilova har bir platformada mahalliy ko'rinishi va harakat qilishi kerak bo'lsa (masalan, platforma animatsiyalari bilan iOS TabBar va Android BottomNavigation dan foydalanish), KMM buni aylanma yo'llarsiz ta'minlaydigan yagona platformalararo yechimdir.
Kamchilik — jamoa bir vaqtning o'zida Kotlin, Swift, Jetpack Compose va SwiftUI ni bilishi kerak, bu esa ishga olishni qiyinlashtiradi. Flutter va React Native bir til va bir freymvorkni bilishni talab qiladi.
Kotlin Multiplatform Mobile — kuchli texnologiya, ammo uni joriy etish muvozanatli yondashuvni talab qiladi. Jamoalar duch keladigan asosiy afzalliklar va odatiy qiyinchiliklarni ko'rib chiqamiz.
Birinchi va eng muhim afzallik — kod takrorlanishini kamaytirish. JetBrains Case Studies (2024) ma'lumotlariga ko'ra, KMM ni joriy etgan jamoalar tarmoq qatlami uchun takrorlanadigan kod hajmini 60–80% ga va umumiy biznes mantiqi uchun 40–50% ga kamaytiradi. Bu bevosita ishlab chiqish tezligiga va xatolar soniga ta'sir qiladi.
Ikkinchi afzallik — mahalliy ilovalar darajasidagi unumdorlik. Gibrid freymvorklardan farqli o'laroq, KMM UI va tizim o'rtasida abstraksiya qatlamlarini qo'shmaydi. Biznes mantiqi kodi, har bir platforma uchun alohida Swift yoki Kotlin-da yozilgandek tez bajariladi.
Asosiy qiyinchilik — jamoaning malakasi. Dasturchilar Kotlin (shared moduli uchun), shuningdek Swift va Jetpack Compose (UI uchun) bilishlari kerak. Universal mutaxassis topish qiyin, shuning uchun odatda shared modulini birgalikda boshqaradigan Android va iOS dasturchilaridan jamoa tuziladi.
Ikkinchi qiyinchilik — vositalar. KMM Gradle, CocoaPods yoki Swift Package Manager konfiguratsiyasini, shuningdek Xcode bilan integratsiyani talab qiladi. Loyihaning dastlabki bosqichlarida, ayniqsa C kutubxonalari bilan ishlashda, kompilyatsiya konfiguratsiyasi bilan bog'liq muammolar tez-tez uchraydi.
Uchinchi qiyinchilik — nosozliklarni tuzatish. Xato Kotlin/Native va Swift tutashgan joyda yuz berganda, uning sababini monolit ilovaga qaraganda aniqlash qiyinroq. JetBrains doimiy ravishda tuzatish vositalarini yaxshilaydi, ammo amalda jamoalar vaqtining 20% gacha infratuzilma vazifalariga sarflashlari kerak.
Tez-tez so'raladigan savollar
Ha, KMM iOS ni yagona maqsadli platforma sifatida qo'llab-quvvatlaydi. Shared moduli iOS freymvorkiga kompilyatsiya qilinadi, u XCFramework orqali Swift loyihasiga ulanadi. Android modulini yaratish shart emas. Bu iOS ilovasining biznes mantiqi uchun Kotlin-dan foydalanmoqchi bo'lgan jamoalar uchun foydalidir.
Kotlin/Native — bu Kotlin kodini virtual mashinasiz mahalliy binarga aylantiruvchi kompilyatordir. KMM shared modulini iOS uchun kompilyatsiya qilishda Kotlin/Native dan foydalanadi. Android uchun KMM standart Kotlin/JVM kompilyatoridan foydalanadi. Kotlin/Native — KMM ning texnologik asosidir.
KMM da mahalliy ma'lumotlar bazalari bilan ishlash uchun SQLDelight ishlatiladi — SQL so'rovlaridan Kotlin kodi yaratadigan platformalararo kutubxona. Android ostida Android SQLite API, iOS ostida Native SQLite (CFNetwork) orqali ishlaydi. Muqobil — MongoDB dan Realm Kotlin SDK.
KMM standart sifatida UI komponentlarini o'z ichiga olmaydi — UI SwiftUI va Jetpack Compose da alohida yoziladi. Biroq, JetBrains dan Compose Multiplatform kabi kutubxonalar mavjud bo'lib, ular mahalliy freymvorksiz to'g'ridan-to'g'ri iOS va Android da Kotlin-da UI render qilish imkonini beradi.
KMM yirik kompaniyalar tomonidan qo'llaniladi: Netflix (tavsiya mantiqini ulashish), McDonald's (mobil ilova), VMWare (korporativ ilovalar) va Leroy Merlin (qurilish materiallari ilovasi). JetBrains ekotizim rivojlanishiga faol sarmoya kiritayotgani sababli ro'yxat o'sib bormoqda.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.