Sobes.tech
Senior

Kotlin Multiplatform ilə işlədinizmi?

sobes.tech Süni İntellekt

AI-dan cavab

Bəli, mən bunun üzərində işlədim. Kotlin Multiplatform Mobile istifadə edərək iOS və Android üçün ümumi məntiq yaratdım (indiki zamanda Kotlin Multiplatform-ın tərkib hissəsidir).

Ktor-u şəbəkə sorğuları üçün, SQLDelight-i verilənlər bazası ilə işləmək üçün və Koin-u asılılıqları idarə etmək üçün istifadə etdim.

Aşağıdakı qatlamları inkişaf etdirdim:

  • Məlumat Qatı: Yerli məlumatlar və şəbəkə ilə işləmək.
  • Domen Qatı: Biznes məntiqi.

UI qatı platformaya bağlı qaldı.

Əsas üstünlüklər olaraq qeyd etdiyim:

  • Kodun təkrar istifadəsi: Məntiqin təkrarlanmasını əhəmiyyətli dərəcədə azaltmaq.
  • Bir dil: Hər iki platforma üçün Kotlin.
  • İnteroperabilik: Platforma kodu ilə yerli qarşılıqlı əlaqə (Swift/Objective-C və Java/Kotlin).

Həmçinin bəzi çətinlikləri qeyd etdim:

  • Ekosistemin yetkinliyi: Bəzi kitabxanalar platformaya xas yığınlardan daha az yetkin ola bilər.
  • Hata ayıklama: Çox platformalı kodun hata ayıklaması daha az intuitiv ola bilər.
  • CI/CD: CI/CD pipeline-larının qurulması KMP-ın xüsusiyyətlərinə diqqət tələb edir.

Ortak moduldan sadə bir sinif nümunəsi:

// 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 nümunədə, Platform gözlənilən (expect) sinifdir və hər platformada (actual) təmin edilir. Greeting bu sinifi istifadə edərək salamlaşma yaradır.

KMP ilə təcrübə, əsas diqqət mərkəzi olmasa da, inkişafı sürətləndirmək və məntiqi çoxplatformalı layihələrdə vahidləşdirmək potensialını göstərdi.