Senior
Kas olete töötanud Kotlin Multiplatformiga?
sobes.tech AI
Vastus AI-lt
Jah, ma töötasin. Lõin üldise loogika iOS ja Android jaoks Kotlin Multiplatform Mobile (praegu Kotlin Multiplatformi osana).
Kasutasin Ktorit võrgupäringuteks, SQLDelighti andmebaasiga töötamiseks ja Koini sõltuvuste haldamiseks.
Arendasin järgmisi kihte:
- Andmekihis: Töötamine kohalike andmete ja võrguga.
- Domeeni kihis: Ärilogika.
UI kiht jäi platvormispetsiifiliseks.
Peamised eelised, mida välja tõin:
- Koodi taaskasutus: Logika dubleerimise märkimisväärne vähendamine.
- Ühtne keel: Kotlin mõlemale platvormile.
- Interoperatiivsus: Natiivne koostöö platvormikoodiga (Swift/Objective-C ja Java/Kotlin).
Samuti tõin välja keerukused:
- Ekosüsteemi küpsus: Mõned teegid võivad olla vähem küpsed kui platvormispetsiifilistes stakkides.
- Silumine: Krossplatvormkoodi silumine võib olla vähem lihtne.
- CI/CD: CI/CD pipeline'i seadistamine nõuab tähelepanu KMP spetsiifikale.
Näide lihtsast klassist ühest moodulist:
// 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}!"
}
}
Näites Platform on ootuspärane (expect) klass, mille teostus toimub iga platvormi puhul (actual). Greeting kasutab seda klassi tervituse koostamiseks.
KMP kogemus, kuigi see ei olnud peamine fookus, näitas potentsiaali arenduse kiirendamiseks ja loogika ühtlustamiseks ristplatvormilistes projektides.