Sobes.tech
Senior

Pracovali ste s Kotlin Multiplatform?

sobes.tech AI

Odpoveď od AI

Áno, na tom som pracoval. Vytvoril som spoločnú logiku pre iOS a Android pomocou Kotlin Multiplatform Mobile (teraz súčasť Kotlin Multiplatform).

Použil som Ktor na sieťové požiadavky, SQLDelight na prácu s databázou a Koin na správu závislostí.

Vyvinul som nasledujúce vrstvy:

  • Vrstva dát: Práca s lokálnymi dátami a sieťou.
  • Vrstva domény: Obchodná logika.

UI vrstva zostala závislá od platformy.

Hlavné výhody, ktoré som zdôraznil:

  • Opakovanie kódu: Významné zníženie duplikácie logiky.
  • Jednotný jazyk: Kotlin pre obe platformy.
  • Interoperabilita: Nativná interakcia s kódom platformy (Swift/Objective-C a Java/Kotlin).

Tiež som zdôraznil niektoré ťažkosti:

  • Zrelosť ekosystému: Niektoré knižnice môžu byť menej zrelé v porovnaní s platformovo špecifickými stackmi.
  • Ladenie: Ladenie kódu pre viac platforiem môže byť menej intuitívne.
  • CI/CD: Nastavenie CI/CD pipeline-ov si vyžaduje pozornosť na špecifiká KMP.

Tu je príklad jednoduchej triedy z spoločného modulu:

// 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}!"
    }
}

Táto skúsenosť s KMP, hoci nebola hlavným zameraním, ukázala potenciál na zrýchlenie vývoja a zjednotenie logiky v multiplatformových projektoch.