Sobes.tech
Senior

Pracoval jste s Kotlin Multiplatform?

sobes.tech AI

Odpověď od AI

Ano, na tom pracoval. Vytvořil jsem společnou logiku pro iOS a Android pomocí Kotlin Multiplatform Mobile (nyní součást Kotlin Multiplatform).

Použil jsem Ktor pro síťové požadavky, SQLDelight pro práci s databází a Koin pro správu závislostí.

Vyvinul jsem následující vrstvy:

  • Datová vrstva: Práce s místními daty a sítí.
  • Doménová vrstva: Obchodní logika.

UI vrstva zůstala závislá na platformě.

Hlavní výhody, které jsem zdůraznil:

  • Opakované použití kódu: Výrazné snížení duplicitní logiky.
  • Jednotný jazyk: Kotlin pro obě platformy.
  • Interoperabilita: Nativní spolupráce s kódem platformy (Swift/Objective-C a Java/Kotlin).

Také jsem zmínil některé obtíže:

  • Zralost ekosystému: Některé knihovny mohou být méně zralé než na platformově specifických stackách.
  • Ladění: Ladění multiplatformního kódu může být méně intuitivní.
  • CI/CD: Nastavení CI/CD pipeline vyžaduje pozornost k specifikům KMP.

Zde je příklad jednoduché třídy z společ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}!"
    }
}

V tomto příkladu je Platform očekávaná (expect) třída, jejíž implementace je poskytována na každé platformě (actual). Greeting používá tuto třídu k vytvoření pozdravu.

Zkušenost s KMP, i když nebyla hlavním zaměřením, ukázala potenciál pro urychlení vývoje a sjednocení logiky v multiplatformních projektech.