Sobes.tech
Back to questions
Junior — Middle
78

Какие основные отличия общего кода при разработке с 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 ориентирован на максимальную переиспользуемость, но требует абстрагирования от платформо-специфичных деталей.