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