Kotlin Multiplatform ile çalıştınız mı?
sobes.tech yapay zeka
AI'dan gelen yanıt
Evet, üzerinde çalıştım. Kotlin Multiplatform Mobile (şimdi Kotlin Multiplatform'un bir parçası) kullanarak iOS ve Android için ortak bir mantık oluşturdum.
Ktor'u ağ istekleri için, SQLDelight'ı veritabanı işlemleri için ve Koin'i bağımlılık yönetimi için kullandım.
Aşağıdaki katmanları geliştirdim:
- Veri Katmanı: Yerel veriler ve ağ ile çalışma.
- Alan Katmanı: İş mantığı.
UI katmanı platforma bağımlı kaldı.
Vurguladığım temel avantajlar:
- Kodun yeniden kullanımı: Mantığın önemli ölçüde tekrarını azaltma.
- Tek dil: Her iki platform için Kotlin.
- İşbirliği: Platform kodu ile yerel etkileşim (Swift/Objective-C ve Java/Kotlin).
Ayrıca bazı zorlukları da belirttim:
- Ekosistemin olgunluğu: Bazı kütüphaneler platforma özgü yığınlara göre daha az olgun olabilir.
- Hata ayıklama: Çok platformlu kodun hata ayıklaması daha az sezgisel olabilir.
- CI/CD: CI/CD pipeline'larının yapılandırılması KMP'nin özelliklerine dikkat gerektirir.
İşte ortak modülden basit bir sınıf örneği:
// commonMain
expect class Platform() {
val name: String
}
// androidMain
actual class Platform actual constructor() {
actual val name: String = "Android ${android.os.Build.VERSION.SDK_INT}"
}
// iosMain
actual class Platform actual constructor() {
actual val name: String =
UIDevice.currentDevice.systemName() + " " + UIDevice.currentDevice.systemVersion
}
// commonMain
class Greeting {
private val platform: Platform = Platform()
fun greet(): String {
return "Hello, ${platform.name}!"
}
}
Bu örnekte, Platform beklenen (expect) bir sınıftır ve her platformda (actual) sağlanan bir uygulaması vardır. Greeting bu sınıfı kullanarak bir selamlamayı oluşturur.
KMP ile ilgili deneyim, ana odak noktası olmasa da, geliştirmeyi hızlandırma ve mantığı ortak projelerde birleştirme potansiyelini gösterdi.