Обзор CocoaPods и настройка
Kotlin/Native поддерживает интеграцию с менеджером зависимостей CocoaPods. Вы можете добавлять зависимости от библиотек Pod, а также использовать проект Kotlin в качестве зависимости CocoaPods.
Вы можете управлять зависимостями Pod непосредственно в IntelliJ IDEA или Android Studio и пользоваться всеми дополнительными функциями, такими как подсветка кода и автодополнение. Вы можете собрать весь проект Kotlin с помощью Gradle, не переключаясь на Xcode.
Xcode понадобится только в том случае, если вы хотите изменить код Swift/Objective-C или запустить приложение на симуляторе либо устройстве Apple. Чтобы работать с Xcode, сначала обновите Podfile.
Настройка среды для работы с CocoaPods
Установите менеджер зависимостей CocoaPods с помощью любого удобного вам инструмента установки:
Установите RVM, если он еще не установлен.
-
Установите Ruby. Вы можете выбрать определенную версию:
rvm install ruby 4.0.6
-
Установите CocoaPods:
sudo gem install -n /usr/local/bin cocoapods
Установите rbenv с GitHub, если он еще не установлен.
-
Установите Ruby. Вы можете выбрать определенную версию:
rbenv install 4.0.6
-
Установите версию Ruby как локальную для определенного каталога или глобальную для всей машины:
rbenv global 4.0.6
-
Установите CocoaPods:
sudo gem install -n /usr/local/bin cocoapods
Вы можете установить менеджер зависимостей CocoaPods с помощью Ruby по умолчанию, который должен быть доступен в macOS:
sudo gem install cocoapods
Установите Homebrew, если он еще не установлен.
-
Установите CocoaPods:
brew install cocoapods
Если во время установки возникнут проблемы, обратитесь к разделу Возможные проблемы и их решения.
Создание проекта
После настройки среды CocoaPods можно настроить проект Kotlin Multiplatform для работы с Pod. Ниже описаны шаги настройки только что созданного проекта:
Создайте новый проект для Android и iOS с помощью плагина Kotlin Multiplatform для IDE или веб-мастера Kotlin Multiplatform. Если вы используете веб-мастер, распакуйте архив и импортируйте проект в IDE.
-
Добавьте плагин Kotlin CocoaPods Gradle в каталог версий (файл
gradle/libs.versions.toml):[plugins] kotlinCocoapods = { id = "org.jetbrains.kotlin.native.cocoapods", version.ref = "kotlin" } -
Перейдите к корневому файлу проекта
build.gradle.ktsи добавьте следующий псевдоним в блокplugins {}:alias(libs.plugins.kotlinCocoapods) apply false
-
Откройте модуль, в который нужно интегрировать CocoaPods, например модуль
sharedLogic, и добавьте следующий псевдоним в блокplugins {}файлаbuild.gradle.kts:alias(libs.plugins.kotlinCocoapods)
Теперь можно настроить CocoaPods в проекте Kotlin Multiplatform.
Настройка проекта
Чтобы настроить плагин Kotlin CocoaPods Gradle в многоплатформенном проекте, выполните следующие действия:
-
В файле
build.gradle(.kts)общего модуля проекта примените плагин CocoaPods, а также плагин Kotlin Multiplatform.plugins { kotlin("multiplatform") version "2.4.20" kotlin("native.cocoapods") version "2.4.20" } -
Настройте
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 } } В IntelliJ IDEA выберите Сборка | Перезагрузить все проекты Gradle (или в Android Studio — Файл | Синхронизировать проект с файлами Gradle), чтобы повторно импортировать проект.
Создайте оболочку Gradle, чтобы избежать проблем совместимости при сборке в Xcode.
После применения плагин CocoaPods выполняет следующие действия:
Добавляет фреймворки
debugиreleaseв качестве выходных бинарных файлов для всех целевых платформ macOS, iOS, tvOS и watchOS.Создает задачу
podspec, которая генерирует файл Podspec для проекта.
Файл Podspec содержит путь к выходному фреймворку и этапы скрипта, автоматизирующие сборку этого фреймворка в процессе сборки проекта Xcode.
Обновление Podfile для Xcode
Чтобы импортировать проект Kotlin в проект Xcode:
-
В части проекта 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
-
-
Выполните
pod installв каталоге проекта.При первом выполнении
pod installсоздается файл.xcworkspace. Этот файл содержит исходный.xcodeprojи проект CocoaPods. Закройте
.xcodeprojи вместо него откройте новый файл.xcworkspace. Это поможет избежать проблем с зависимостями проекта.В 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. Чтобы устранить такие ошибки, попробуйте следующие решения:
Обновление пакетов
Обновите инструмент установки и установленные пакеты (гемы):
-
Обновите RVM:
rvm get stable
-
Обновите менеджер пакетов Ruby — RubyGems:
gem update --system
-
Обновите все установленные гемы до последних версий:
gem update
-
Обновите Rbenv:
cd ~/.rbenv git pull
-
Обновите менеджер пакетов Ruby — RubyGems:
gem update --system
-
Обновите все установленные гемы до последних версий:
gem update
-
Обновите менеджер пакетов Homebrew:
brew update
-
Обновите все установленные пакеты до последних версий:
brew upgrade
Указание имени фреймворка
Найдите файл
module.modulemapв загруженном каталоге Pod[shared_module_name]/build/cocoapods/synthetic/IOS/Pods/....-
Проверьте имя фреймворка внутри модуля, например
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 включена изоляция скриптов пользователя.
Чтобы устранить эту проблему:
-
Отключите изоляцию скриптов пользователя для целевого объекта приложения:

-
Остановите процесс демона Gradle, который мог быть запущен в изолированной среде:
./gradlew --stop
Что дальше
© 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