Ответ
Common code в KMP позволяет писать бизнес-логику один раз и использовать её на всех платформах.
Особенности:
- Доступ к платформенным API через
expect/actual - Ограниченный доступ к платформенным SDK (например, нет прямого доступа к Android View)
- Поддержка multiplatform библиотек (корутины, сериализация, Ktor)
- Разделение на commonMain, androidMain, iosMain и др.
Пример:
// commonMain
expect fun getPlatformName(): String
// androidMain
actual fun getPlatformName() = "Android"
// iosMain
actual fun getPlatformName() = "iOS"
Проблемы:
- Ограниченная поддержка некоторых Kotlin фич (например, reflection)
- Сложности с нативными зависимостями