Heeft u met Kotlin Multiplatform gewerkt?
sobes.tech AI
Antwoord van AI
Ja, ik heb eraan gewerkt. Ik heb een gemeenschappelijke logica voor iOS en Android gemaakt met Kotlin Multiplatform Mobile (nu onderdeel van Kotlin Multiplatform).
Ik gebruikte Ktor voor netwerkverzoeken, SQLDelight voor databasewerking en Koin voor afhankelijkheidsbeheer.
Ik ontwikkelde de volgende lagen:
- Data-laag: Werken met lokale gegevens en netwerk.
- Domein-laag: Bedrijfslogica.
De UI-laag bleef platformafhankelijk.
De belangrijkste voordelen die ik heb benadrukt:
- Herbruikbaarheid van code: Significante vermindering van duplicatie van logica.
- Eenduidige taal: Kotlin voor beide platforms.
- Interoperabiliteit: Native interactie met platformcode (Swift/Objective-C en Java/Kotlin).
Ik heb ook enkele moeilijkheden benadrukt:
- Ecosysteemvolwassenheid: Sommige bibliotheken kunnen minder volwassen zijn dan op platform-specifieke stacks.
- Debugging: Debuggen van cross-platform code kan minder intuïtief zijn.
- CI/CD: Het instellen van CI/CD-pijplijnen vereist aandacht voor de specificaties van KMP.
Hier een voorbeeld van een eenvoudige klasse uit een gemeenschappelijk module:
// 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}!"
}
}
In dit voorbeeld is Platform een verwachte (expect) klasse, waarvan de implementatie wordt geleverd op elk platform (actual). Greeting gebruikt deze klasse om een begroeting te vormen.
De ervaring met KMP, hoewel niet de hoofdfocus, toonde het potentieel om ontwikkeling te versnellen en logica te unificeren in multiplatform-projecten.