Какие основные отличия общего кода при разработке с Kotlin Multiplatform?
Answer from AI
sobes.tech AI
При разработке с Kotlin Multiplatform общий код имеет несколько отличий от обычного Kotlin-кода:
-
Модульность и разделение по платформам: общий код пишется в специальных модулях (commonMain), а платформо-зависимый — в отдельных (androidMain, iosMain и т.д.).
-
Ограниченный API: в общем коде нельзя использовать платформо-специфичные библиотеки и API напрямую. Вместо этого применяются expect/actual механизмы для объявления интерфейсов и их реализации на конкретных платформах.
-
Использование expect/actual: позволяет объявлять в общем коде ожидаемые функции или классы (expect), а реализовывать их отдельно для каждой платформы (actual).
-
Более строгие ограничения по библиотекам: в общем коде можно использовать только мультиплатформенные библиотеки или стандартные Kotlin-библиотеки, поддерживающие MPP.
Пример использования expect/actual:
// commonMain
expect fun getPlatformName(): String
// androidMain
actual fun getPlatformName() = "Android"
// iosMain
actual fun getPlatformName() = "iOS"
Таким образом, общий код Kotlin Multiplatform ориентирован на максимальную переиспользуемость, но требует абстрагирования от платформо-специфичных деталей.