Настройте свою среду (мультиплатформенность Kotlin)

Kotlin Multiplatform (KMP) позволяет использовать код Kotlin на разных платформах. Прежде чем приступить к созданию приложений с помощью KMP, вам необходимо настроить среду, как описано в этом документе. Вы также можете обратиться к официальной документации Jetbrain.

Установите или обновите необходимые инструменты

  • Установите или обновите последнюю стабильную версию Android Studio .
  • Обновите плагин Kotlin , входящий в состав Android Studio, до последней версии, чтобы избежать проблем с совместимостью.
  • (Необязательно) Для разработки iOS установите Xcode для создания пользовательского интерфейса и при необходимости добавьте код Swift или Objective-C.

Создайте мультиплатформенный проект Kotlin

Вы можете использовать мастер Kotlin Multiplatform от Jetbrains, чтобы создать новый проект KMP. Обязательно выберите параметр «Не использовать общий доступ к пользовательскому интерфейсу» , чтобы сохранить собственный пользовательский интерфейс.

Структура проекта

Проекты KMP имеют структуру, аналогичную проектам Android.

Проект KMP содержит модули, специфичные для платформы, а также общий модуль. Добавьте свой код для конкретной платформы в соответствующий модуль. Например, добавьте пользовательский интерфейс приложения Android в модуль androidApp и пользовательский интерфейс приложения iOS в iosApp . Любой код, который вы хотите использовать между платформами, находится в общем модуле.

Общий модуль использует Gradle в качестве системы сборки, как и остальная часть проекта. Вы можете объявить общие и специфичные для платформы зависимости, используя наборы исходных кодов. Например, если ваше приложение использует Ktor для работы в сети, вам необходимо добавить зависимость OkHttp для Android и зависимость darwin для iOS. Обратите внимание, что некоторым библиотекам требуются только общие зависимости и не нужны зависимости, специфичные для платформы.

sourceSets {
   commonMain.dependencies {
       //put your multiplatform dependencies here
       //...
       implementation(libs.ktor.client.core)
       implementation(libs.ktor.client.content.negotiation)
       implementation(libs.ktor.serialization.kotlinx.json)
       //...
   }
   androidMain.dependencies {
       implementation(libs.ktor.client.okhttp)
   }
   iosMain.dependencies {
       implementation(libs.ktor.client.darwin)
   }
}

Когда вы добавляете новую библиотеку в общий модуль вашего приложения, обязательно проверьте наличие необходимых зависимостей для каждой платформы.