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 pipelines изисква внимание към спецификите на 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, макар и да не беше основният фокус, показа потенциала за ускоряване на разработката и обединяване на логиката в мултиплатформени проекти.