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-ի հետ, չնայած այն հիմնական նպատակ չէր, ցույց տվեց զարգացման արագացման և տրամաբանության միավորման պոտենցիալը բազմափլատֆորմային նախագծերում։