Mobile App WikiMobile App Wiki
WikiApp DiscoverDiscuss

Wiki

    mobileapp.wiki

    Wiki

    • ASO17
    • Monetizasyon14
    • Mağaza Politikaları20
    • Metrikler15
    • Geliştirme25
    • Pazarlama15
    • Hukuk9
    • UI/UX14
    • Test & QA10
    • Altyapı10

    mobileapp.wiki

    Ana Sayfa/Geliştirme/Kotlin Multiplatform (KMP) & Compose Multiplatform
    Geliştirme5 dk okuma

    Kotlin Multiplatform (KMP) & Compose Multiplatform

    Kotlin Multiplatform ile Android ve iOS arasında kod paylaşımı: Compose Multiplatform durumu, temel kütüphaneler, iOS entegrasyonu ve Flutter karşılaştırması.

    Kotlin Multiplatform (KMP) & Compose Multiplatform

    İçindekiler

    Kotlin Multiplatform Nedir?Neyi Paylaşmalı, Neyi Native Bırakmalı?Compose MultiplatformProje Yapısıexpect/actualTemel KütüphaneleriOS EntegrasyonuObjective-C KöprüsüSwift ExportKMP, Flutter ve React Native KarşılaştırmasıKMP Ne Zaman Seçilmeli?Mevcut Android Uygulamasını Taşımaİlgili Konular

    Kotlin Multiplatform Nedir?

    Kotlin Multiplatform (KMP), Kotlin kodunu birden fazla hedefe derler: Android için JVM, iOS için Kotlin/Native, web için JavaScript veya WebAssembly. Flutter ve React Native'den farklı olarak KMP sizi ortak bir UI'a zorlamaz; tek bir networking modülünden tüm uygulamaya kadar ne kadarını paylaşacağınızı siz seçersiniz.

    KMP 2023 sonundan beri stable ve Google, Android ile iOS arasında business logic paylaşımı için KMP'yi resmi olarak destekliyor. Ekim 2026 itibarıyla en güncel stable Kotlin sürümü 2.4.21; 2.5.0 ise Aralık 2026 için planlanıyor.

    Neyi Paylaşmalı, Neyi Native Bırakmalı?

    KatmanGenelde paylaşılır mı?Not
    Domain modelleri ve iş kurallarıEvetSaf Kotlin, en kolay kazanım
    Networking ve serializationEvetKtor + kotlinx.serialization
    Yerel depolama ve cacheEvetSQLDelight, Room, DataStore
    ViewModel ve stateÇoğunluklaJetpack ViewModel ve Lifecycle KMP destekliyor
    UIOpsiyonelNative UI veya Compose Multiplatform
    Platform API'leri (kamera, ödeme, widget)NadirenInterface arkasına alın

    Yaygın başlangıç "ortak logic, native UI" modelidir: Android'de Jetpack Compose, iOS'ta SwiftUI, altta tek Kotlin modülü.

    Compose Multiplatform

    Compose Multiplatform (CMP), JetBrains'in Jetpack Compose tabanlı deklaratif UI framework'üdür. 6 Mayıs 2025'te yayınlanan Compose Multiplatform 1.8.0 ile iOS desteği stable oldu. Ekim 2026 itibarıyla güncel seri 1.12 (1.12.2, Ekim 2026'da yayınlandı).

    PlatformKMP coreCompose Multiplatform
    AndroidStableStable
    iOSStableStable
    Desktop (JVM)StableStable
    Web (Kotlin/Wasm)BetaBeta

    CMP, iOS'ta UIKit bileşenleri yerine Flutter gibi kendi UI'ını çizer. SwiftUI uygulamasında bir Compose ekranı açabilir ya da Compose içine native iOS view'ları gömebilirsiniz.

    Proje Yapısı

    Tipik bir KMP projesinde, platform başına source set içeren bir shared modül bulunur:

    shared/
      src/commonMain/   // tüm platformlar için ortak kod
      src/androidMain/  // Android'e özel implementasyonlar
      src/iosMain/      // iOS'a özel implementasyonlar
    androidApp/         // Android uygulaması
    iosApp/             // Xcode projesi
    

    expect/actual

    Ortak kodun bir platform API'sine ihtiyacı olduğunda commonMain'de expect tanımlanır, her platform source set'inde actual karşılığı yazılır. expect/actual fonksiyon ve property'ler stable; expect/actual class'lar ise hâlâ Beta. Resmi öneri, interface + factory fonksiyonu kullanmak:

    // commonMain
    interface Platform { val name: String }
    expect fun getPlatform(): Platform
    
    // iosMain
    actual fun getPlatform(): Platform = object : Platform {
        override val name = UIDevice.currentDevice.systemName()
    }
    

    Temel Kütüphaneler

    İhtiyaçKütüphane
    Asenkron işler ve stream'lerkotlinx.coroutines (suspend, Flow)
    JSONkotlinx.serialization
    HTTPKtor client (Android'de OkHttp, iOS'ta Darwin engine)
    SQL veritabanıSQLDelight veya Room (KMP)
    Key-value depolamaDataStore (KMP)
    Dependency injectionKoin
    Tarih ve saatkotlinx-datetime
    MimariJetpack ViewModel, Lifecycle, Navigation (KMP sürümleri)

    Bir kütüphanenin iosArm64 ve iosSimulatorArm64 dahil tüm hedefleriniz için artifact yayınladığını kontrol edin.

    iOS Entegrasyonu

    Shared modül bir Apple framework'üne derlenir. Xcode'daki bir Gradle build phase ile doğrudan entegre edebilir ya da XCFramework olarak Swift Package Manager ile dağıtabilirsiniz.

    Objective-C Köprüsü

    Kotlin, varsayılan olarak API'sini Swift'e Objective-C header'ları üzerinden açar. Bazı Kotlin özellikleri bu köprüde iyi karşılanmaz: sealed class'lar Swift enum'ına dönüşmez, Flow için wrapper gerekir.

    Touchlab'in SKIE plugin'i bu çıktıyı iyileştirir: sealed class'lar exhaustive Swift enum'larına, suspend fonksiyonlar async'e, Flow'lar AsyncSequence'e dönüşür. SKIE'nin yeni Kotlin sürümlerine desteği gecikebilir; Kotlin'i yükseltmeden önce uyumluluğu kontrol edin.

    Swift Export

    Swift export, Objective-C katmanı olmadan doğrudan Kotlin'den Swift API'si üretir. Ekim 2026 itibarıyla resmi dokümanda Alpha olarak listeleniyor: yalnızca direct integration ile çalışıyor, generic'lerde kısıtları var ve breaking change bekleniyor. Roadmap'te Beta'ya geçiş hedefi var. Denemeye değer, ancak production için şimdilik varsayılan köprüde kalın.

    KMP, Flutter ve React Native Karşılaştırması

    Kotlin MultiplatformFlutterReact Native
    DilKotlinDartJavaScript / TypeScript
    UINative veya Compose MultiplatformKendi rendering engine'iNative bileşenler
    Paylaşılan kısımTek modülden tüm uygulamayaGenelde tüm uygulamaGenelde tüm uygulama
    Mevcut native uygulamaya eklemeKademeli, modül modülMümkün, daha az yaygınMümkün, daha az yaygın
    Android çıktısıNormal Kotlin/JVM koduDart runtime + engineJS runtime + native modüller
    iOS ekibinin deneyimiSwift, Kotlin framework'ünü çağırırÇoğunlukla DartÇoğunlukla JS/TS

    KMP Ne Zaman Seçilmeli?

    • Elinizde Kotlin ile yazılmış bir Android uygulaması var ve logic'i iOS'ta da kullanmak istiyorsunuz.
    • Her platformda native UI istiyor, iş kuralları için tek bir kaynak arıyorsunuz.
    • Ekibiniz Kotlin'de güçlü; iOS UI'ı yine Swift geliştiricileri sahiplenebilir.
    • Ortak UI'ın zorlaştıracağı derin platform entegrasyonları gerekiyor.

    Sıfırdan başlayan, tek UI kod tabanı isteyen küçük bir ekip için Flutter veya React Native daha basit olabilir.

    Mevcut Android Uygulamasını Taşıma

    1. Saf Kotlin kodu ayırın. Model, validation ve use case'leri Android import'u içermeyen bir shared modüle taşıyın.
    2. Android'e bağımlı kütüphaneleri değiştirin. Retrofit yerine Ktor, Gson/Moshi yerine kotlinx.serialization, java.time yerine kotlinx-datetime kullanın; persistence'ı Room KMP veya SQLDelight'a taşıyın.
    3. Tek bir iOS özelliği yayınlayın. Shared modülü iOS'ta tek bir akış için kullanın; build süresini, binary boyutunu ve Swift API ergonomisini ölçün.
    4. Kademeli genişletin. Sırada repository ve ViewModel'ler var; Compose Multiplatform ekranlarını sonraya bırakın.

    İlgili Konular

    • Kotlin & Jetpack Compose
    • Swift & SwiftUI
    • Flutter
    • React Native

    Bu içeriği nasıl buldunuz?

    Paylaş

    ← Önceki

    React Native

    Sonraki →

    Flutter

    İlgili İçerikler

    React Native

    Meta'nın JavaScript tabanlı cross-platform framework'ü React Native rehberi. iOS ve Android native uygulama geliştirme, Expo ve New Architecture.

    Flutter

    Google'ın Dart tabanlı cross-platform UI toolkit'i Flutter rehberi. Tek codebase ile iOS, Android, Web ve Desktop uygulama geliştirme stratejileri.

    Expo

    React Native için hızlı geliştirme platformu Expo rehberi. EAS Build, OTA güncelleme, cloud build, managed workflow ve SDK modülleri detayları.

    CI/CD (Mobil)

    Mobil uygulamalar için CI/CD pipeline rehberi. EAS Build, Fastlane, Bitrise, Codemagic ve GitHub Actions ile sürekli entegrasyon ve dağıtım.

    Code Signing (iOS)

    iOS uygulama imzalama süreci rehberi. Certificate ve provisioning profile yönetimi, automatic ve manual signing, Fastlane Match ve CI/CD entegrasyonu.

    Android Kapalı Test

    Android Kapalı Test hizmeti için androidtesti.com platformunu ziyaret edin.

    androidtesti.com