Senior
Vai esat strādājis ar Kotlin Multiplatform?
sobes.tech AI
Atbilde no AI
Jā, es strādāju. Es izveidoju kopēju loģiku iOS un Android platformām, izmantojot Kotlin Multiplatform Mobile (tagad Kotlin Multiplatform sastāvā).
Es izmantoju Ktor tīkla pieprasījumiem, SQLDelight datu bāzes darbībai un Koin atkarību pārvaldībai.
Es izstrādāju šādus slāņus:
- Data Layer: Darbs ar vietējiem datiem un tīklu.
- Domain Layer: Biznesa loģika.
UI slānis palika platformas atkarīgs.
Galvenās priekšrocības, kuras izcēlu:
- Koda atkārtota izmantošana: Liela loģikas dublēšanas samazināšana.
- Vienota valoda: Kotlin abām platformām.
- Interoperabilitāte: Nativā saskare ar platformas kodu (Swift/Objective-C un Java/Kotlin).
Tika arī izcelti grūtības:
- Ekosistēmas nobriedums: Dažas bibliotēkas var būt mazāk nobriedušas nekā platformas specifiskajos stackos.
- Atkļūdošana: Kros-platformas koda atkļūdošana var būt mazāk vienkārša.
- CI/CD: CI/CD pipeline konfigurācija prasa uzmanību KMP specifikai.
Piemērs vienkāršas klases no kopējā moduļa:
// 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}!"
}
}
Šajā piemērā Platform ir gaidāms (expect) klases, kura realizācija tiek nodrošināta katrā platformā (actual). Greeting izmanto šo klasi sveiciena veidošanai.
KMP pieredze, lai arī nebija galvenais fokuss, parādīja potenciālu paātrināt izstrādi un vienot loģiku kros-platformu projektos.