Добавьте Kotlin Multiplatform в существующий проект

Чтобы создать многоплатформенный модуль Kotlin (KMP) в проекте Android, используйте шаблон общего многоплатформенного модуля Kotlin , доступный в Android Studio Meerkat и плагине Android Gradle версии 8.8.0 и выше.

Шаблон модуля автоматизирует создание нового модуля с минимальной конфигурацией для платформ Android и iOS.

Настройте общий модуль KMP

Чтобы создать общий модуль KMP, выполните следующие действия:

  1. Выберите «Файл» > «Создать» > «Новый модуль».
  2. Выберите шаблон общего многоплатформенного модуля Kotlin на панели «Шаблоны» :
Создание нового модуля KMP
Рисунок 1. Создание нового модуля KMP.

Поля в шаблоне следующие:

  • Имя модуля — определяет имя модуля Gradle, а также имя платформы iOS (можно изменить позже).
  • Имя пакета – определяет имя пакета для файлов в этом модуле.
    1. Нажмите «Готово» и разрешите Gradle синхронизироваться с проектом. Вам также может быть предложено добавить вновь созданные файлы модулей в систему контроля версий.

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

Представление проекта, показывающее новые общие модули
Рис. 2. Представление проекта, показывающее новые общие модули.

Мастер модулей не добавляет вновь созданный модуль в качестве зависимости к какому-либо существующему модулю. В качестве следующего шага вам необходимо связать общий модуль с одним из существующих модулей Gradle аналогично другим зависимостям Android.

dependencies {
    ...
    implementation(project(":shared"))
}

После включения вы сможете получить доступ к коду как обычно. Из приложения Android вы можете получить доступ к коду, который доступен либо в androidMain, либо в commonMain.

Для получения дополнительной информации о структуре многоплатформенного проекта Kotlin см. основы структуры многоплатформенного проекта Kotlin.

Настройте общий модуль в приложении iOS.

Swift не может использовать модули Kotlin напрямую и требует создания скомпилированной двоичной среды.

Новый шаблон модуля в Android Studio настраивает общий модуль для создания платформы для каждой архитектуры iOS. Вы можете найти следующий код в файле build.gradle.kts общего модуля:

val xcfName = "sharedKit"

iosX64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

iosSimulatorArm64 {
  binaries.framework {
    baseName = xcfName
  }
}

См. «Иерархическая структура проекта» для получения информации об определении других типов архитектуры.

Чтобы обеспечить доступ к общему коду из проекта iOS, добавьте этап сценария для создания платформы Kotlin перед компиляцией исходных кодов Swift:

  1. Щелкните правой кнопкой мыши файл в Android Studio и выберите «Открыть в» и «Открыть в связанном приложении» . Это откроет приложение iOS в Xcode.
Открыть в связанном приложении
Рисунок 3. Открытие в связанном приложении
  1. Откройте настройки проекта, дважды щелкнув имя проекта в навигаторе проекта.
Диалоговое окно настроек проекта Xcode
Рисунок 4. Диалоговое окно настроек проекта Xcode
  1. Измените имя запуска сценария по умолчанию на «Компилировать Kotlin Framework», чтобы лучше понять, что делает этот этап. Дважды щелкните заголовок «Выполнить сценарий», чтобы отредактировать его.
  2. Разверните этап сборки и в текстовом поле «Оболочка» введите следующий код сценария:
Добавление нового этапа сборки сценария запуска
Рисунок 5. Запуск этапа сборки сценария
  1. Перетащите этап «Выполнить сценарий» перед этапом «Компиляция исходных кодов» .

    Запустите этап сборки скрипта перед компиляцией исходных кодов.
    Рис. 6. Запустите этап сборки скрипта перед компиляцией исходных кодов.

  2. Создайте проект в Xcode, нажав ⌘B или перейдя в меню «Продукт» и выбрав «Сборка» .

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

Успешная сборка показана в Xcode
Рисунок 7. Успешная сборка

Получите доступ к общему коду в приложении iOS.

Чтобы убедиться, что приложение iOS может успешно получить доступ к коду из общего модуля, выполните следующие действия:

  1. В проекте iOS откройте файл ContentView.swift по адресу: Sources/View/ContentView.swift
  2. Добавьте import sharedKit в начало файла.
  3. Измените представление «Текст», включив в отображаемую строку информацию Platform_iosKt.platform() следующим образом:

Это обновление проверяет, может ли приложение Fruitties вызывать функцию platform() из общего модуля, которая должна возвращать «iOS» при работе на платформе iOS.

Симулятор Xcode, запускающий приложение iOS
Рисунок 8. Симулятор Xcode, на котором работает приложение iOS.

Дополнительные ресурсы

Если вы новичок в разработке KMP, дополнительные руководства см. в официальной документации KMP . Если вы новичок в разработке для iOS, см. документацию Swift Basics ..