Skip to main content
Mobil ve Çok Platformlu Geliştirme

Kotlin Multiplatform ve Compose ile Tek Kod Tabanından Mobil, Masaüstü ve Web Uygulamaları

Mart 15, 2026 4 dk okuma 14 views Raw
Akdeniz, apartman kompleksi, apartment tower içeren Ücretsiz stok fotoğraf
İçindekiler

Kotlin Multiplatform (KMP) ve Compose Multiplatform, günümüzün çoklu platform gereksinimlerine cevap veren güçlü bir yaklaşımdır. Tek bir kod tabanı ile iş mantığıyı, veri katmanını ve mümkün olduğunda kullanıcı arayüzünü paylaşarak geliştirme hızını artırabilir, bakım maliyetlerini düşürebilir ve platformlar arası tutarlılığı yakalayabilirsiniz. Bu yazıda 2026 perspektifinden KMP ve Compose kullanarak mobil, masaüstü ve web uygulamalarını tek bir kod tabanından nasıl ele alacağınızı, avantajlarını, sınırlamalarını, proje yapısını ve CI/CD önerilerini ele alacağız.

Kotlin Multiplatform ve Compose Multiplatform nedir?

Kotlin Multiplatform (KMP), ortak (common) kodun farklı hedeflere (Android, iOS, JVM, JavaScript, native/desktop) derlenmesine olanak verir. Business logic, ağ katmanı, veri erişimi, doğrulama, formatlama ve testler gibi platformdan bağımsız bileşenleri tek yerde tutabilirsiniz.

Compose Multiplatform, Jetpack Compose felsefesini birden çok hedefe taşıyan UI kütüphanesidir. Compose for Android, Compose for Desktop ve Compose for Web gibi alt başlıklar altında, deklaratif UI yazımını farklı ortamlarda kullanmanıza imkan verir. iOS için Compose desteği deneysel/halen gelişen yaklaşımlar ile mümkün olabilmektedir (platformun güncel durumu ve hedeflenen entegrasyon stratejisini projenize göre değerlendirmeniz gerekir).

Neyi ortak tutmalı, neleri platforma özel bırakmalısınız?

Her proje farklıdır; genel bir kural olarak şu ayrımı yapabilirsiniz:

  • Ortak (common) katman: İş mantığı, domain modeller, veri erişimi (SQLDelight, Ktor, GraphQL client), doğrulama, seri hale getirme (kotlinx.serialization), coroutine tabanlı iş akışları, birim testleri.
  • Platforma özel katman: Donanıma yakın API'lar (kamera, sensörler), natif UI ihtiyaçları ve platforma özel optimizasyonlar, OS seviyesinde izin yönetimi, bazı paketleme/dağıtım işleri (APK/IPA/msi).

UI tarafında mümkün olduğunca Compose bileşenlerini kullanarak birçok platformda aynı mantığı paylaşabilirsiniz. Ancak performans veya platform beklentileri nedeniyle bazı ekranları platforma özel Compose/SwiftUI/Android Views ile yazmak tercih edilebilir.

Örnek proje yapısı

Tipik bir KMP + Compose projesi modüllerle aşağıdaki gibi organize edilebilir:

:shared  (kmp common kod)
  - src/commonMain/ (business logic, models)
  - src/androidMain/ (Android özel implementasyonlar)
  - src/iosMain/ (iOS özel implementasyonlar)
  - src/jsMain/ (Web özel kodlar)

:androidApp  (Android uygulaması)
:iosApp      (iOS uygulaması, Xcode projesi veya XCFramework)
:desktopApp  (Compose for Desktop paketleri)
:webApp      (Compose for Web ya da Kotlin/JS SPA)

Shared modülde SQLDelight, ktor-client, kotlinx.serialization, kotlinx.coroutines gibi kütüphaneler yaygın olarak kullanılır. Dependency Injection için Koin veya getirilen multiplatform DI seçenekleri değerlendirilebilir.

UI'ı paylaşma stratejileri

Tam paylaşım

Compose Multiplatform kullanılarak aynı UI bileşenleri Android, Desktop ve Web üzerinde çalıştırılabilir. Bu yaklaşım en yüksek kod paylaşımını sağlar ancak platforma özgü görünüm ve davranış farklılıklarını yönetmeniz gerekir.

Ortak mantık + platforma özel kabuk

UI mantığını (state, ViewModel, navigation) ortak tutup, render kısmını platforma özgü Compose bileşenleri veya platformun kendi UI kütüphanesi ile yazmak daha kontrollü bir yaklaşımdır. Bu, platforma özel etkileşimleri ve erişilebilirlik gereksinimlerini daha iyi karşılayabilir.

Yayınlama ve paketleme

Her platformun paketleme gereksinimi farklıdır:

  • Android: APK/AAB oluşturulur. Gradle ve Android Gradle Plugin kullanılır.
  • iOS: KMP ile oluşturulan framework'ler Xcode'a entegre edilir (CocoaPods veya XCFramework). iOS tarafında Compose desteği için güncel yol haritasını kontrol edin.
  • Desktop: Compose for Desktop uygulamaları native yürütülebilirler; platforma özel installer (DMG, MSI) üretilebilir.
  • Web: Compose for Web veya Kotlin/JS ile SPA üretimi, statik dosyalar bir CDN veya hosting sağlayıcıya dağıtılır.

Test, kalite ve CI/CD

Testleri ortak katmanda yazarak çok platformlu güvence elde edin. Unit testler (commonTest) Kotlin test altyapısı ile çalışır. UI testleri için platforma özel araçlar gereklidir (Android Instrumentation, XCUITest, desktop UI testleri için araçlar). Otomasyon ve dağıtım için GitHub Actions, GitLab CI veya Jenkins kullanabilirsiniz. Öneriler:

  • Gradle cache ve Kotlin/Native cache'lerini CI'da etkin kullanın.
  • Her platform için ayrı job'lar ama ortak artefakt (shared framework) üretimini tek bir pipeline adımında ele alın.
  • Versiyonlama için tek kaynak (monorepo) ve semantic versioning uygulayın.

Performans ve sınırlamalar

KMP ve Compose Multiplatform güçlü olsa da bazı sınırlamalar vardır. Web tarafında Compose for Web, tarayıcı optimizasyonlarına tabi olduğundan native performans farkı olabilir. iOS tarafında Compose entegrasyonu deneysel veya ek köprülemeler gerektirebilir; bu sebeple üretim kullanımı öncesi kapsamlı test şarttır. Native platforma özgü optimizasyonlar gerektiğinde platforma özel implementasyon yapmak en güvenli yoldur.

Pratik ipuçları ve en iyi uygulamalar

  • Küçük başlayın: Önce iş mantığınızı KMP'ye taşıyın, sonra UI paylaşımına geçin.
  • Detaylı modül sınırları belirleyin: Shared modülde yalnızca platformdan bağımsız kod olsun.
  • Kotlinx.serialization, SQLDelight ve Ktor gibi multiplatform kütüphanelerden faydalanın.
  • Otomasyon ve testler sürekli entegre olsun; platforma özel testleri ihmal etmeyin.
  • Topluluk ve resmi dokümantasyonu takip edin; çok platformlu ekosistem hızla evriliyor.

Sonuç

Kotlin Multiplatform ve Compose Multiplatform, 2026'da modern çok platformlu projeler için cazip bir yol sunuyor. Doğru mimari ve sınırlandırmalarla hem geliştirme hızını artırabilir hem de bakım maliyetlerini azaltabilirsiniz. Ancak her proje kendine özgüdür: kullanıma başlamadan önce gereksinimlerinizi, hedef platform performans beklentilerini ve ekibinizin yetkinliklerini değerlendirmeniz önemlidir. Küçük adımlarla başlayıp, test ve CI ile güvenli bir şekilde ölçeklendirin.

Sen Ekolsoft olarak, çok platformlu projelerinizde mimari danışmanlık, POC geliştirme ve performans optimizasyonu konularında yardımcı olabiliriz. İhtiyaçlarınızı paylaşırsanız örnek bir proje planı çıkarabiliriz.

Bu yazıyı paylaş