Spec-Zone.ru › Kotlin 2

Обзор CocoaPods и настройка

Kotlin/Native поддерживает интеграцию с менеджером зависимостей CocoaPods. Вы можете добавлять зависимости от библиотек Pod, а также использовать проект Kotlin в качестве зависимости CocoaPods.

Подход с интеграцией CocoaPods нельзя использовать вместе с механизмом embedAndSignAppleFrameworkForXcode, применяемым для прямой интеграции.

Вы можете управлять зависимостями Pod непосредственно в IntelliJ IDEA или Android Studio и пользоваться всеми дополнительными функциями, такими как подсветка кода и автодополнение. Вы можете собрать весь проект Kotlin с помощью Gradle, не переключаясь на Xcode.

Xcode понадобится только в том случае, если вы хотите изменить код Swift/Objective-C или запустить приложение на симуляторе либо устройстве Apple. Чтобы работать с Xcode, сначала обновите Podfile.

Настройка среды для работы с CocoaPods

Установите менеджер зависимостей CocoaPods с помощью любого удобного вам инструмента установки:

  1. Установите RVM, если он еще не установлен.

  2. Установите Ruby. Вы можете выбрать определенную версию:

    rvm install ruby 4.0.6
    
  3. Установите CocoaPods:

    sudo gem install -n /usr/local/bin cocoapods
    
  1. Установите rbenv с GitHub, если он еще не установлен.

  2. Установите Ruby. Вы можете выбрать определенную версию:

    rbenv install 4.0.6
    
  3. Установите версию Ruby как локальную для определенного каталога или глобальную для всей машины:

    rbenv global 4.0.6
    
  4. Установите CocoaPods:

    sudo gem install -n /usr/local/bin cocoapods
    

Этот способ установки не работает на устройствах с чипами Apple M. Используйте другие инструменты для настройки среды работы с CocoaPods.

Вы можете установить менеджер зависимостей CocoaPods с помощью Ruby по умолчанию, который должен быть доступен в macOS:

sudo gem install cocoapods

Установка CocoaPods с помощью Homebrew может привести к проблемам совместимости.

При установке CocoaPods Homebrew также устанавливает гем Xcodeproj, необходимый для работы с Xcode. Однако его нельзя обновить с помощью Homebrew, и если установленная версия Xcodeproj еще не поддерживает новейшую версию Xcode, при установке Pod возникнут ошибки. В этом случае попробуйте установить CocoaPods с помощью других инструментов.

  1. Установите Homebrew, если он еще не установлен.

  2. Установите CocoaPods:

    brew install cocoapods
    

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

Создание проекта

После настройки среды CocoaPods можно настроить проект Kotlin Multiplatform для работы с Pod. Ниже описаны шаги настройки только что созданного проекта:

  1. Создайте новый проект для Android и iOS с помощью плагина Kotlin Multiplatform для IDE или веб-мастера Kotlin Multiplatform. Если вы используете веб-мастер, распакуйте архив и импортируйте проект в IDE.

  2. Добавьте плагин Kotlin CocoaPods Gradle в каталог версий (файл gradle/libs.versions.toml):

    [plugins]
    kotlinCocoapods = { id = "org.jetbrains.kotlin.native.cocoapods", version.ref = "kotlin" }
    
  3. Перейдите к корневому файлу проекта build.gradle.kts и добавьте следующий псевдоним в блок plugins {}:

    alias(libs.plugins.kotlinCocoapods) apply false
    
  4. Откройте модуль, в который нужно интегрировать CocoaPods, например модуль sharedLogic, и добавьте следующий псевдоним в блок plugins {} файла build.gradle.kts:

    alias(libs.plugins.kotlinCocoapods)
    

Теперь можно настроить CocoaPods в проекте Kotlin Multiplatform.

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

Чтобы настроить плагин Kotlin CocoaPods Gradle в многоплатформенном проекте, выполните следующие действия:

  1. В файле build.gradle(.kts) общего модуля проекта примените плагин CocoaPods, а также плагин Kotlin Multiplatform.

    Пропустите этот шаг, если вы создали проект с помощью плагина для IDE или веб-мастера.

    plugins {
        kotlin("multiplatform") version "2.4.20"
        kotlin("native.cocoapods") version "2.4.20"
    }
    
  2. Настройте version, summary, homepage и baseName файла Podspec в блоке cocoapods:

    plugins {
        kotlin("multiplatform") version "2.4.20"
        kotlin("native.cocoapods") version "2.4.20"
    }
    
    kotlin {
        cocoapods {
            // Required properties
            // Specify the required Pod version here
            // Otherwise, the Gradle project version is used
            version = "1.0"
            summary = "Some description for a Kotlin/Native module"
            homepage = "Link to a Kotlin/Native module homepage"
    
            // Optional properties
            // Configure the Pod name here instead of changing the Gradle project name
            name = "MyCocoaPod"
    
            framework {
                // Required properties              
                // Framework name configuration. Use this property instead of deprecated 'frameworkName'
                baseName = "MyFramework"
    
                // Optional properties
                // Specify the framework linking type. It's dynamic by default. 
                isStatic = false
                // Dependency export
                // Uncomment and specify another project module if you have one:
                // export(project(":<your other KMP module>"))
                transitiveExport = false // This is default.
            }
    
            // Maps custom Xcode configuration to NativeBuildType
            xcodeConfigurationToNativeBuildType["CUSTOM_DEBUG"] = NativeBuildType.DEBUG
            xcodeConfigurationToNativeBuildType["CUSTOM_RELEASE"] = NativeBuildType.RELEASE
        }
    }
    

    Полный синтаксис Kotlin DSL см. в репозитории плагина Kotlin Gradle.

  3. В IntelliJ IDEA выберите Сборка | Перезагрузить все проекты Gradle (или в Android Studio — Файл | Синхронизировать проект с файлами Gradle), чтобы повторно импортировать проект.

  4. Создайте оболочку Gradle, чтобы избежать проблем совместимости при сборке в Xcode.

После применения плагин CocoaPods выполняет следующие действия:

  • Добавляет фреймворки debug и release в качестве выходных бинарных файлов для всех целевых платформ macOS, iOS, tvOS и watchOS.

  • Создает задачу podspec, которая генерирует файл Podspec для проекта.

Файл Podspec содержит путь к выходному фреймворку и этапы скрипта, автоматизирующие сборку этого фреймворка в процессе сборки проекта Xcode.

Обновление Podfile для Xcode

Чтобы импортировать проект Kotlin в проект Xcode:

  1. В части проекта Kotlin для iOS внесите изменения в Podfile:

    • Если в проекте есть зависимости от Git, HTTP или пользовательских репозиториев Podspec, укажите путь к Podspec в Podfile.

      Например, если вы добавляете зависимость от podspecWithFilesExample, укажите путь к Podspec в Podfile:

      target 'ios-app' do
         # ... other dependencies ...
         pod 'podspecWithFilesExample', :path => 'cocoapods/externalSources/url/podspecWithFilesExample' 
      end
      

      В :path должен быть указан путь к Pod.

    • Если вы добавляете библиотеку из пользовательского репозитория Podspec, укажите расположение спецификаций в начале Podfile:

      source 'https://github.com/Kotlin/kotlin-cocoapods-spec.git'
      
      target 'kotlin-cocoapods-xcproj' do
          # ... other dependencies ...
          pod 'example'
      end
      
  2. Выполните pod install в каталоге проекта.

    При первом выполнении pod install создается файл .xcworkspace. Этот файл содержит исходный .xcodeproj и проект CocoaPods.

  3. Закройте .xcodeproj и вместо него откройте новый файл .xcworkspace. Это поможет избежать проблем с зависимостями проекта.

  4. В IntelliJ IDEA выберите Сборка | Перезагрузить все проекты Gradle (или в Android Studio — Файл | Синхронизировать проект с файлами Gradle), чтобы повторно импортировать проект.

Если не внести эти изменения в Podfile, задача podInstall завершится с ошибкой, а плагин CocoaPods выведет сообщение об ошибке в журнал.

Возможные проблемы и их решения

Установка CocoaPods

Установка Ruby

CocoaPods создан на Ruby. Его можно установить с помощью Ruby по умолчанию, который должен быть доступен в macOS. В Ruby 1.9 и более поздних версиях встроена система управления пакетами RubyGems, которая помогает установить менеджер зависимостей CocoaPods.

Если у вас возникли проблемы с установкой CocoaPods и его запуском, следуйте этому руководству по установке Ruby или обратитесь к сайту RubyGems, чтобы установить систему управления пакетами.

Совместимость версий

Рекомендуем использовать последнюю версию Kotlin. Минимальная версия, необходимая для этой настройки CocoaPods, — 1.7.0.

Ошибки сборки при использовании Xcode

Некоторые варианты установки CocoaPods могут привести к ошибкам сборки в Xcode. Как правило, плагин Kotlin Gradle находит исполняемый файл pod в PATH, однако результат может различаться в зависимости от среды.

Чтобы явно указать путь установки CocoaPods, можно вручную добавить его в файл проекта local.properties или выполнить команду оболочки:

  • Если вы используете редактор кода, добавьте следующую строку в файл local.properties:

    kotlin.apple.cocoapods.bin=/Users/Jane.Doe/.rbenv/shims/pod
    
  • Если вы используете терминал, выполните следующую команду:

    echo -e "kotlin.apple.cocoapods.bin=$(which pod)" >> local.properties
    

Модуль или фреймворк не найден

При установке Pod могут возникнуть ошибки module 'SomeSDK' not found или framework 'SomeFramework' not found, связанные с проблемами взаимодействия с C. Чтобы устранить такие ошибки, попробуйте следующие решения:

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

Обновите инструмент установки и установленные пакеты (гемы):

  1. Обновите RVM:

    rvm get stable
    
  2. Обновите менеджер пакетов Ruby — RubyGems:

    gem update --system
    
  3. Обновите все установленные гемы до последних версий:

    gem update
    
  1. Обновите Rbenv:

    cd ~/.rbenv
    git pull
    
  2. Обновите менеджер пакетов Ruby — RubyGems:

    gem update --system
    
  3. Обновите все установленные гемы до последних версий:

    gem update
    
  1. Обновите менеджер пакетов Homebrew:

    brew update
    
  2. Обновите все установленные пакеты до последних версий:

    brew upgrade
    

Указание имени фреймворка

  1. Найдите файл module.modulemap в загруженном каталоге Pod [shared_module_name]/build/cocoapods/synthetic/IOS/Pods/....

  2. Проверьте имя фреймворка внутри модуля, например SDWebImageMapKit {}. Если имя фреймворка не совпадает с именем Pod, укажите его явно:

    pod("SDWebImage/MapKit") {
        moduleName = "SDWebImageMapKit"
    }
    

Указание заголовочных файлов

Если Pod не содержит файл .modulemap, как, например, pod("NearbyMessages"), явно укажите основной заголовочный файл:

pod("NearbyMessages") {
    version = "1.1.1"
    headers = "GNSMessages.h"
}

Дополнительную информацию см. в документации CocoaPods. Если ничего не помогает и ошибка продолжает возникать, сообщите о проблеме в YouTrack.

Отсутствуют ресурсы в пакете приложения

Если приложение iOS собирается успешно, но аварийно завершает работу при запуске, или если в итоговом пакете .ipa отсутствуют ресурсы, например пользовательские шрифты и изображения, возможно, возникла проблема с интеграцией Pod в проект.

Чтобы избежать этой проблемы: вместо непосредственного запуска команды pod install используйте задачу Gradle podInstall, предоставляемую плагином Kotlin CocoaPods Gradle. Эта задача создает необходимые каталоги и выполняет всю настройку за вас:

./gradlew podInstall
open iosApp/iosApp.xcworkspace

Причина проблемы: при запуске нативной команды pod install в чистом проекте (например, после клонирования репозитория или при работе в конвейере CI/CD) каталог ресурсов еще не создан. Плагин Compose Multiplatform Gradle указывает расположение ресурсов в сгенерированном файле .podspec: spec.resources = ['build/compose/cocoapods/compose-resources'], но этот путь появляется только после сборки. В результате CocoaPods игнорирует отсутствующий каталог и настраивает проект Xcode без этих ресурсов. Когда проект собирается и ресурсы генерируются, Xcode не копирует их в итоговый пакет.

Ошибка Rsync

Может возникнуть ошибка rsync error: some files could not be transferred. Это известная проблема, возникающая, если для целевого объекта приложения в Xcode включена изоляция скриптов пользователя.

Чтобы устранить эту проблему:

  1. Отключите изоляцию скриптов пользователя для целевого объекта приложения:

    Disable sandboxing CocoaPods
  2. Остановите процесс демона Gradle, который мог быть запущен в изолированной среде:

    ./gradlew --stop
    

Что дальше

  • Добавление зависимостей от библиотеки Pod в проект Kotlin

  • Настройка зависимостей между проектом Kotlin и проектом Xcode

  • Полный справочник DSL плагина CocoaPods Gradle

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

© 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-overview.html

Spec-Zone.ru

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