Spec-Zone.ru › Kotlin 2

Переключение проекта Kotlin Multiplatform с CocoaPods на зависимости SwiftPM

Если у вас есть модуль KMP с зависимостями CocoaPods и вы хотите перейти на пакеты Swift с помощью импорта SwiftPM, выполните следующие действия:

  1. Обновите скрипт сборки, добавив зависимости SwiftPM и соответствующую конфигурацию

  2. Перенастройте проект Xcode для использования прямой интеграции с помощью инструментов импорта SwiftPM

  3. Полностью или частично отключите интеграцию с CocoaPods в зависимости от структуры проекта

Вы можете поручить миграцию с CocoaPods на SwiftPM выбранному вами ИИ-агенту с помощью нашего подготовленного навыка. Помните, что результаты обработки ИИ не полностью предсказуемы.

Обновление скрипта сборки

Чтобы обновить сборку, следуйте инструкциям на странице импорта SwiftPM:

  1. Измените версию плагина Kotlin Multiplatform Gradle на 2.4.20-RC3

  2. Укажите необходимые зависимости SwiftPM, не отключая плагин CocoaPods и не удаляя зависимости CocoaPods

Например, если вы используете pod FirebaseAnalytics:

  1. Убедитесь, что настроили плагин Kotlin Multiplatform Gradle для использования версии 2.4.20-RC3.

  2. Добавьте пакет Swift FirebaseAnalytics в блок swiftPMDependencies {}:

    // projectDir/sharedLogic/build.gradle.kts
    kotlin {
        swiftPMDependencies {
           swiftPackage(
               url = url("https://github.com/firebase/firebase-ios-sdk.git"),
               version = from("12.5.0"),
               products = listOf(product("FirebaseAnalytics")),
           )
        }
    
        cocoapods {
            // ...
    
            pod("FirebaseAnalytics") {
            version = "12.5.0"
            // ...
            }
        }
    }
    
  3. Выполните действие Синхронизировать проект с файлами Gradle, чтобы импортировать API из пакета Swift.

  4. Обновите код, чтобы использовать API, импортированные из пакета Swift. Если pod и соответствующий пакет Swift предоставляют совершенно одинаковые API, достаточно обновить директивы импорта Kotlin, например:

             import cocoapods.FirebaseAnalytics.FIRAnalytics
         
             import swiftPMImport.org.example.package.FIRAnalytics
         
  5. Если в скрипте сборки используется блок cocoapods.framework {}, перенесите эту конфигурацию в блок binaries.framework {}, например:

    kotlin {
        iosArm64()
        iosSimulatorArm64()
    
        cocoapods {
            framework {
                baseName = "Shared"
                isStatic = true
            }
        }
    }
    
    kotlin {
        listOf(
            iosArm64(),
            iosSimulatorArm64(),
        ).forEach { iosTarget ->
            iosTarget.binaries.framework {
                baseName = "Shared"
                isStatic = true
            }
        }
    }
    

Перенастройка проекта Xcode

Если вы используете плагин CocoaPods Gradle (kotlin("native.cocoapods")), перед переходом на SwiftPM необходимо перенастроить проект Xcode для использования прямой интеграции. Инструменты импорта SwiftPM могут сгенерировать команду оболочки для внесения необходимых изменений в файл .xcodeproj.

  1. Откройте проект в Xcode (в IntelliJ IDEA выберите Файл | Открыть проект в Xcode).

  2. Соберите проект в Xcode (Продукт | Собрать). Сборка должна завершиться с ошибкой, но в сообщении об ошибке будет содержаться нужная команда.

  3. Чтобы просмотреть ошибки сборки в Xcode, выберите Вид | Навигаторы | Отчёт, а затем выберите в фильтре вверху пункт Только ошибки. Команда выглядит следующим образом и содержит правильные пути к вашему проекту:

    XCODEPROJ_PATH='/path/to/project/iosApp/iosApp.xcodeproj' GRADLE_PROJECT_PATH=':kotlin-library' '/path/to/project/gradlew' -p '/path/to/project' ':kotlin-library:integrateEmbedAndSign' ':kotlin-library:integrateLinkagePackage'
    

    Такую же команду можно сгенерировать, не открывая Xcode, собрав проект из терминала. Выполните следующую команду в каталоге /path/to/project/iosApp:

    xcodebuild -scheme "$(echo -n *.xcworkspace | python3 -c 'import sys, json; from subprocess import check_output; print(list(set(json.loads(check_output(["xcodebuild", "-workspace", sys.stdin.readline(), "-list", "-json"]))["workspace"]["schemes"]) - set(json.loads(check_output(["xcodebuild", "-project", "Pods/Pods.xcodeproj", "-list", "-json"]))["project"]["schemes"]))[0])')" -workspace *.xcworkspace -destination 'generic/platform=iOS Simulator' ARCHS=arm64 | grep -A5 'What went wrong'
    

    Вызов grep в конце находит конкретное сообщение об ошибке и команду, которую нужно выполнить.

  4. В каталоге /path/to/project/iosApp выполните сгенерированную команду в терминале. Она изменит файл .xcodeproj вашего проекта iosApp, чтобы во время сборки запускалась задача embedAndSignAppleFrameworkForXcode, которая добавляет фазу компиляции Kotlin Multiplatform в сборку для iOS.

  5. В IntelliJ IDEA выберите Инструменты | Swift Package Manager | Разрешить зависимости, чтобы разрешить зависимости SwiftPM, объявленные в файле build.gradle.kts.

Теперь приложение для iOS использует зависимости SwiftPM. Вы можете отключить плагин CocoaPods и удалить интеграцию pod.

Удаление интеграции CocoaPods с KMP

Если вы заменили все зависимости CocoaPods пакетами Swift, теперь можно удалить интеграцию pod, выполнив следующую команду в каталоге /path/to/project/iosApp:

pod deintegrate

Если вы хотите продолжать использовать CocoaPods для зависимостей, не пересекающихся с зависимостями SwiftPM, измените файл Podfile, удалив только строку с упоминанием модуля KMP, а затем выполните pod install. Например:

target 'iosApp' do
    # Here 'sharedLogic' is the name of a shared code module.
    # Remove this line and run 'pod install' again.
    pod 'sharedLogic', :path => '../sharedLogic'
    ...
end

Наконец, удалите упоминания CocoaPods из конфигурации сборки Gradle:

  1. Удалите весь блок cocoapods {} из файла build.gradle.kts в модуле общего кода, поскольку теперь всеми зависимостями управляют инструменты импорта SwiftPM.

  2. Если ваш проект больше не зависит от CocoaPods, удалите ссылки на плагин CocoaPods Gradle из блока plugins {} как в корневом файле build.gradle.kts, так и в файле build.gradle.kts общего модуля.

3 июня 2026 г.
Добавление пакетов Swift в качестве зависимостей модулей KMPПереключение проекта Kotlin Multiplatform с CocoaPods на зависимости SwiftPM с помощью Junie

© 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-cocoapods-spm-migration.html

Spec-Zone.ru

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