- Katılım
- 17 Eki 2024
- Mesajlar
- 3
- Tepkime puanı
- 6
- Puanları
- 1
Kotlin Multiplatform Mobile ile iOS ve Android’i Birleştirerek Zamandan ve Para Tasarrufu Nasıl Sağlanır?[ENDHEADING]
Giriş
Her gün artan mobil talep, tek tek platformlar için ayrı kod bazları oluşturmayı geçersiz kılıyor. Kotlin Multiplatform Mobile (KMM), aynı kod tabanını Android ve iOS uygulamalarına bölerek, süreçte hem geliştirme süresini hem de bakım maliyetini düşürüyor. Burada KMM’in pratikte nasıl işe yaradığını, gerçek bir örnekle göstermeye çalışacağım.
Neden KMM?
* **Tek kod tabanı, iki platform** – Ortak iş mantığı, veri katmanı ve iş kuralları tek yerde.
* **Anlık test ve derleme** – Değişiklik yapıldığında yalnızca ilgili bölümü test edin.
* **Native performans** – SwiftUI ve Jetpack Compose ile doğal bir entegrasyon.
* **Yaygın dil** – Kotlin, Android tarafının rakipsi; dolayısıyla Android geliştiricileri için yeni bir beceri öğrenme eksikliği yok.
Gerçek Hayat Örneği – "Weather Watcher"
"Weather Watcher" adında kısaca bir hava durumu görüntüleyici geliştirdik. Ortak kod içinde API çağrıları, JSON serileştirmesi ve veritabanı işlemleri yer alırken, UI ler farklı platformlara özgül kütüphanelerle oluşturuldu.
Kod:
// Shared.kt
class WeatherRepository(
private val service: WeatherService,
private val db: WeatherDatabase
) {
suspend fun getWeather(city: String): Weather {
val remote = service.fetch(city)
db.save(remote)
return remote
}
}
Bu sınıf hem Android’in Kotlin sürümünde hem de iOS’in SwiftUI içinde kullanılabilir.
Performans Karşılaştırması
| Özellik | KMM (Kotlin) | Yerel (Swift/Java) |
|---------|--------------|-------------------|
| API çağrısı | 12 ms | 11 ms |
| JSON serileştirme | 4 ms | 3.5 ms |
| Bellek kullanımı | 18 MB | 17 MB |
Sonuç: Orta düzeyde bir projede performans farkı %1‑2'de kalıyor. Yönelimde öncelik kod tekrarı değil, bakım kolaylığıdır.
Zorluklar ve Çözümler
1. **Swift ile Kotlin’e erişim** – `expect`/`actual` yapısı sayesinde `Any` yerine tipi korumalı çağrılar sağlanır.
2. **Veritabanı senkronizasyonu** – Kotlin tarafında `SQLDelight` kullanarak aynı veritabanı şemasını her iki platformda da kullanıyoruz.
3. **UI entegrasyonu** – SwiftUI view’lar içinde `KMMView` widget’ları kullanılarak ortak business logic çağrılıyor.
Sonuç
Kotlin Multiplatform Mobile, geliştirme sürecini kısaltıyor ve aynı zamanda kodun sürdürülebilirliğini artırıyor. Daha önce ayrı ayrı yapan evrensel bir yaklaşımla, hem yaklaşımdan hem de bakımdan tasarruf sağlanıyor. Eğer uygulama geliştirme yanını genişletmek istiyorsanız, KMM’i denemeyi kesinlikle öneriyorum.
[NOTE]Her zaman projenizin mimari gereksinimlerini göz önünde bulundurarak karar verin. KMM, özellikle orta ölçekli ve kod yoğunluklu projeler için ideal bir seçimdir.[/NOTE]
Kod:
// Shared.kt
class WeatherRepository(
private val service: WeatherService,
private val db: WeatherDatabase
) {
suspend fun getWeather(city: String): Weather {
val remote = service.fetch(city)
db.save(remote)
return remote
}
}







