Spec-Zone.ru › Kotlin 2

Использование Kotlin в локальных пакетах Swift

В этом руководстве вы узнаете, как интегрировать фреймворк Kotlin из проекта Kotlin Multiplatform в локальный пакет с помощью Swift Package Manager (SwiftPM).

Direct integration diagram

Чтобы настроить интеграцию, добавьте специальный скрипт, который использует задачу Gradle embedAndSignAppleFrameworkForXcode в качестве предварительного действия в настройках сборки проекта. Чтобы изменения в общем коде отображались в проекте Xcode, достаточно будет пересобрать проект Kotlin Multiplatform.

Таким образом, вы сможете легко использовать код Kotlin в локальных пакетах Swift. В отличие от этого, при обычном способе прямой интеграции скрипт добавляется на этапе сборки, и для применения изменений в общем коде необходимо пересобрать и проект Kotlin Multiplatform, и проект iOS.

Если вы не знакомы с Kotlin Multiplatform, сначала узнайте, как настроить среду и создать кроссплатформенное приложение с нуля.

Настройка проекта

Эта функция доступна начиная с Kotlin 2.0.0.

Чтобы проверить версию Kotlin, откройте файл build.gradle(.kts) в корневом каталоге проекта Kotlin Multiplatform. Текущая версия указана в блоке plugins {} в начале файла.

Также можно проверить каталог версий в файле gradle/libs.versions.toml.

В этом руководстве предполагается, что в проекте используется подход прямой интеграции с задачей embedAndSignAppleFrameworkForXcode на этапе сборки проекта. Если вы подключаете фреймворк Kotlin через плагин CocoaPods или пакет Swift с binaryTarget, сначала выполните миграцию.

Миграция с интеграции SwiftPM binaryTarget

Чтобы перейти с интеграции SwiftPM с binaryTarget:

  1. В Xcode очистите каталоги сборки с помощью пунктов Продукт | Очистить папку сборки или сочетания клавиш Cmd + Shift + K.

  2. В каждом файле Package.swift удалите зависимости как от пакета со встроенным фреймворком Kotlin, так и от продуктов в зависимостях целевых объектов.

Миграция с плагина CocoaPods

Если в блоке cocoapods {} у вас есть зависимости от других Pod, придется использовать подход интеграции CocoaPods. Сейчас в многомодульном проекте SwiftPM невозможно одновременно иметь зависимости от Pod и от фреймворка Kotlin.

Чтобы перейти с плагина CocoaPods:

  1. В Xcode очистите каталоги сборки с помощью пунктов Продукт | Очистить папку сборки или сочетания клавиш Cmd + Shift + K.

  2. В каталоге с Podfile выполните следующую команду:

    pod deintegrate
    
  3. Удалите блок cocoapods {} из файлов build.gradle(.kts).

  4. Удалите файл .podspec и Podfile.

Подключение фреймворка к проекту

Интеграция в swift build сейчас не поддерживается.

Чтобы использовать код Kotlin в локальном пакете Swift, подключите к проекту Xcode фреймворк Kotlin, созданный проектом Multiplatform:

  1. В Xcode выберите Продукт | Схема | Изменить схему или нажмите значок схемы на верхней панели и выберите Изменить схему:

    Edit scheme
  2. Выберите пункт Сборка | Предварительные действия, затем нажмите + | Новое действие сценария запуска:

    New run script action
  3. Измените следующий скрипт и добавьте его в качестве действия:

    cd "<Path to the root of the multiplatform project>"
    ./gradlew :<Shared module name>:embedAndSignAppleFrameworkForXcode 
    
    • В команде cd укажите путь к корневому каталогу проекта Kotlin Multiplatform, например $SRCROOT/...

    • В команде ./gradlew укажите имя общего модуля, например :shared или :sharedLogic.

  4. В разделе Предоставлять настройки сборки из выберите целевой объект приложения:

    Filled run script action
  5. Теперь вы можете импортировать общий модуль в локальный пакет Swift и использовать код Kotlin.

    В Xcode перейдите к локальному пакету Swift и объявите функцию с импортом модуля, например:

    import Shared
    
    public func greetingsFromSpmLocalPackage() -> String {
        return Greeting.greet()
    }
    
    SwiftPM usage
  6. Теперь в файле 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()
    }
    
  7. Соберите проект в Xcode. Если все настроено правильно, сборка проекта завершится успешно.

Также следует учитывать еще несколько моментов:

  • Если вы используете пользовательскую конфигурацию сборки, отличающуюся от стандартной Debug или Release, на вкладке Параметры сборки добавьте настройку KOTLIN_FRAMEWORK_BUILD_TYPE в раздел Определенные пользователем и задайте для нее значение Debug или Release.

  • Если возникла ошибка из-за изоляции сценариев, откройте настройки проекта iOS двойным щелчком по имени проекта, затем на вкладке Параметры сборки отключите параметр Изоляция пользовательских сценариев в разделе Параметры сборки.

Что дальше

  • Выберите способ интеграции

  • Узнайте, как настроить экспорт пакета Swift

15 мая 2026 г.
Справочник DSL плагина Gradle CocoaPodsНастройка компиляций

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API