Использование Kotlin в локальных пакетах Swift
В этом руководстве вы узнаете, как интегрировать фреймворк Kotlin из проекта Kotlin Multiplatform в локальный пакет с помощью Swift Package Manager (SwiftPM).
Чтобы настроить интеграцию, добавьте специальный скрипт, который использует задачу Gradle embedAndSignAppleFrameworkForXcode в качестве предварительного действия в настройках сборки проекта. Чтобы изменения в общем коде отображались в проекте Xcode, достаточно будет пересобрать проект Kotlin Multiplatform.
Таким образом, вы сможете легко использовать код Kotlin в локальных пакетах Swift. В отличие от этого, при обычном способе прямой интеграции скрипт добавляется на этапе сборки, и для применения изменений в общем коде необходимо пересобрать и проект Kotlin Multiplatform, и проект iOS.
Настройка проекта
Эта функция доступна начиная с Kotlin 2.0.0.
В этом руководстве предполагается, что в проекте используется подход прямой интеграции с задачей embedAndSignAppleFrameworkForXcode на этапе сборки проекта. Если вы подключаете фреймворк Kotlin через плагин CocoaPods или пакет Swift с binaryTarget, сначала выполните миграцию.
Миграция с интеграции SwiftPM binaryTarget
Чтобы перейти с интеграции SwiftPM с binaryTarget:
В Xcode очистите каталоги сборки с помощью пунктов Продукт | Очистить папку сборки или сочетания клавиш Cmd + Shift + K.
В каждом файле
Package.swiftудалите зависимости как от пакета со встроенным фреймворком Kotlin, так и от продуктов в зависимостях целевых объектов.
Миграция с плагина CocoaPods
Чтобы перейти с плагина CocoaPods:
В Xcode очистите каталоги сборки с помощью пунктов Продукт | Очистить папку сборки или сочетания клавиш Cmd + Shift + K.
-
В каталоге с Podfile выполните следующую команду:
pod deintegrate
Удалите блок
cocoapods {}из файловbuild.gradle(.kts).Удалите файл
.podspecи Podfile.
Подключение фреймворка к проекту
Чтобы использовать код Kotlin в локальном пакете Swift, подключите к проекту Xcode фреймворк Kotlin, созданный проектом Multiplatform:
-
В Xcode выберите Продукт | Схема | Изменить схему или нажмите значок схемы на верхней панели и выберите Изменить схему:
-
Выберите пункт Сборка | Предварительные действия, затем нажмите + | Новое действие сценария запуска:

-
Измените следующий скрипт и добавьте его в качестве действия:
cd "<Path to the root of the multiplatform project>" ./gradlew :<Shared module name>:embedAndSignAppleFrameworkForXcode
В команде
cdукажите путь к корневому каталогу проекта Kotlin Multiplatform, например$SRCROOT/...В команде
./gradlewукажите имя общего модуля, например:sharedили:sharedLogic.
-
В разделе Предоставлять настройки сборки из выберите целевой объект приложения:

-
Теперь вы можете импортировать общий модуль в локальный пакет Swift и использовать код Kotlin.
В Xcode перейдите к локальному пакету Swift и объявите функцию с импортом модуля, например:
import Shared public func greetingsFromSpmLocalPackage() -> String { return Greeting.greet() }
-
Теперь в файле
ContentView.swiftпроекта iOS можно использовать эту функцию, импортировав локальный пакет:import SwiftUI import SpmLocalPackage struct ContentView: View { var body: some View { Vstack { Image(systemName: "globe") .imageScale(.large) .foregroundStyle(.tint) Text(greetingsFromSpmLocalPackage()) } .padding() } } #Preview { ContentView() } Соберите проект в Xcode. Если все настроено правильно, сборка проекта завершится успешно.
Также следует учитывать еще несколько моментов:
Если вы используете пользовательскую конфигурацию сборки, отличающуюся от стандартной
DebugилиRelease, на вкладке Параметры сборки добавьте настройкуKOTLIN_FRAMEWORK_BUILD_TYPEв раздел Определенные пользователем и задайте для нее значениеDebugилиRelease.Если возникла ошибка из-за изоляции сценариев, откройте настройки проекта iOS двойным щелчком по имени проекта, затем на вкладке Параметры сборки отключите параметр Изоляция пользовательских сценариев в разделе Параметры сборки.
Что дальше
© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/multiplatform/multiplatform-spm-local-integration.html