0Pricing
Kotlin Academy · Урок

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

Общий и платформенный код

«Структура проекта KMM» — бесплатный урок Kotlin Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Kotlin Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Kotlin Academy содержит 4 уроков всего.

Что такое KMM

Kotlin Multiplatform Mobile (KMM) позволяет совместно использовать код между iOS и Android, сохраняя нативные пользовательские интерфейсы. Вы один раз пишете бизнес-логику на Kotlin.

Общий модуль

В центре проекта KMM находится общий модуль. Он компилируется в библиотеку JVM для Android и нативный фреймворк для iOS.

  • Android использует его как обычную зависимость
  • iOS импортирует его как фреймворк Objective-C/Swift

Наборы исходного кода

Общий модуль разделён на наборы исходного кода:

  • commonMain — общий код, не зависящий от платформы
  • androidMain — код для Android
  • iosMain — код для iOS

commonMain

commonMain может использовать только стандартную библиотеку Kotlin и многоплатформенные библиотеки. Он не должен напрямую ссылаться на программные интерфейсы Android или iOS.

// shared/src/commonMain/kotlin/Greeting.kt
class Greeting {
    fun greet(): String = "Hello, KMM!"
}

Настройка целевых платформ

Общий build.gradle.kts объявляет платформы, для которых нужно выполнять сборку с помощью многоплатформенного плагина.

kotlin {
    androidTarget()
    iosX64()
    iosArm64()
    iosSimulatorArm64()
}

Фреймворк iOS

Целевые платформы iOS объединяются в единый фреймворк, который импортирует Xcode.

kotlin {
    listOf(iosX64(), iosArm64(), iosSimulatorArm64()).forEach {
        it.binaries.framework {
            baseName = "Shared"
        }
    }
}

Общие зависимости

Многоплатформенные библиотеки (coroutines, serialization, Ktor) добавляются в commonMain, чтобы все целевые платформы использовали их совместно.

sourceSets {
    val commonMain by getting {
        dependencies {
            implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.1")
        }
    }
}

Модуль приложения Android

Модуль приложения Android зависит от shared так же, как любой модуль Gradle, и создаёт пользовательский интерфейс Android с помощью Jetpack Compose или Views.

// androidApp/build.gradle.kts
dependencies {
    implementation(project(":shared"))
}

Приложение iOS

Приложение iOS — это стандартный проект Xcode. Оно подключает созданный фреймворк Shared и вызывает классы Kotlin из Swift.

// Swift
// import Shared
// let text = Greeting().greet()

Что следует сделать общим

Типичный общий код: сетевое взаимодействие, модели данных, репозитории, варианты использования и проверка данных. Пользовательский интерфейс, навигацию и датчики платформы оставляйте нативными.

Автономное приветствие

Общая логика написана на обычном Kotlin. Ниже тот же класс запускается автономно, чтобы показать: это обычный код.

class Greeting {
    fun greet(): String = "Hello, KMM!"
}

fun main() {
    println(Greeting().greet())
}

Быстрая проверка

Где следует размещать код, который не должен содержать ссылок на программные интерфейсы Android или iOS?

Итоги

Вы изучили структуру KMM:

  • Модуль shared с наборами commonMain, androidMain, iosMain
  • Целевые платформы объявляются в многоплатформенном плагине; для iOS создаётся фреймворк
  • Android подключает зависимость через project(":shared"), а iOS импортирует фреймворк

Далее: expect и actual.

Часто задаваемые вопросы

Урок «Структура проекта KMM» бесплатный?

Да — полный текст урока «Структура проекта KMM» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Kotlin Academy, подпишись на CoddyKit PRO. Курс Kotlin Academy содержит 4 уроков всего.

Чему я научусь в уроке «Структура проекта KMM»?

Общий и платформенный код Ты практикуешь Kotlin Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Kotlin Academy?

Предыдущий опыт не требуется. Kotlin Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Структура проекта KMM»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Kotlin Academy?

Да. Каждый урок Kotlin Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Структура проекта KMM
  2. expect и actual
  3. Совместное использование бизнес-логики
  4. API платформ
← Назад к Kotlin Academy