Sobes.tech
Senior

Оё бо Kotlin Multiplatform кор кардаед?

sobes.tech AI

Ҷавоб аз AI

Бале, ман дар ин кор кардам. Ман логикаи умумиро барои iOS ва Android бо истифода аз Kotlin Multiplatform Mobile (ҳоло қисми Kotlin Multiplatform) эҷод кардам.

Ман Ktor-ро барои дархостҳои шабакавӣ, SQLDelight-ро барои кор бо базаи додаҳо ва Koin-ро барои идоракунии вобастагиҳо истифода кардам.

Ман қабл аз ҳама қабатҳои зеринро таҳия кардам:

  • Қабати маълумот: Кор бо маълумоти маҳаллӣ ва шабака.
  • Қабати домен: Логикаи бизнес.

Қабати UI бо платформа вобаста монд.

Ман асосан ба ин бартариҳоро таъкид кардам:

  • Истифодаи такрорӣ: Кам кардани такрори логикаи зиёд.
  • Забон ягона: Kotlin барои ҳар ду платформа.
  • Интероперабилитет: Взаимодории табиӣ бо коди платформа (Swift/Objective-C ва Java/Kotlin).

Ман инчунин баъзе мушкилотро қайд кардам:

  • Мушкилоти рушди экосистема: Баъзе китобхонаҳо метавонанд камтар рушд ёфта бошанд, нисбат ба стеки махсуси платформа.
  • Таҳлили хатогиҳо: Таҳлили коди бисёрплатформӣ метавонад камтар осон бошад.
  • CI/CD: Танзими пайплайни CI/CD ниёз ба диққат ба хусусиятҳои KMP дорад.

Инҷо намунаи содда аз як синфи оддӣ аз модул умумӣ:

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

Интихоби бо KMP, ҳарчанд ки он асосан мақсад набуд, потенсиалро барои суръат бахшидани таҳия ва ягонагии логикаро дар лоиҳаҳои бисёрплатформӣ нишон дод.