Spec-Zone.ru › Kotlin 2

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

В проект Kotlin можно добавить зависимости от библиотек Pod из разных источников.

Чтобы добавить зависимость от Pod, вызовите функцию pod() в файле build.gradle(.kts) общего модуля. Для каждой зависимости требуется отдельный вызов функции. Параметры зависимости можно указать в блоке конфигурации функции.

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

  • Когда вы добавите новую зависимость и повторно импортируете проект в IDE, библиотека подключится автоматически.

  • Чтобы использовать проект Kotlin с Xcode, сначала измените Podfile проекта.

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

Из репозитория CocoaPods

Чтобы добавить зависимость от библиотеки Pod, расположенной в репозитории CocoaPods:

  1. Укажите имя библиотеки Pod в функции pod().

    В блоке конфигурации можно указать версию библиотеки с помощью параметра version. Чтобы использовать последнюю версию библиотеки, этот параметр можно не указывать.

    Также можно добавлять зависимости от подсекций.

  2. Укажите минимальную версию целевой платформы для библиотеки Pod.

    kotlin {
        iosArm64()
    
        cocoapods {
            version = "2.0"
            summary = "CocoaPods test library"
            homepage = "https://github.com/JetBrains/kotlin"
            ios.deploymentTarget = "16.0"
    
            pod("SDWebImage") {
                version = "5.20.0"
            }
        }
    }
    
  3. Чтобы повторно импортировать проект, выберите Сборка | Перезагрузить все проекты Gradle в IntelliJ IDEA (или Файл | Синхронизировать проект с файлами Gradle в Android Studio).

Чтобы использовать эти зависимости в коде Kotlin, импортируйте пакеты cocoapods.<library-name>:

import cocoapods.SDWebImage.*

Из локально сохраненной библиотеки

Чтобы добавить зависимость от локально сохраненной библиотеки Pod:

  1. Укажите имя библиотеки Pod в функции pod().

    В блоке конфигурации укажите путь к локальной библиотеке Pod: используйте функцию path() в значении параметра source.

    Также можно добавлять локальные зависимости от подсекций. Блок cocoapods {} может одновременно содержать зависимости от локально сохраненных Pod и Pod из репозитория CocoaPods.

  2. Укажите минимальную версию целевой платформы для библиотеки Pod.

    kotlin {
        iosArm64()
    
        cocoapods {
            version = "2.0"
            summary = "CocoaPods test library"
            homepage = "https://github.com/JetBrains/kotlin"
            ios.deploymentTarget = "16.0"
    
            pod("pod_dependency") {
                version = "1.0"
                extraOpts += listOf("-compiler-option")
                source = path(project.file("../pod_dependency"))
            }
            pod("subspec_dependency/Core") {
                version = "1.0"
                extraOpts += listOf("-compiler-option")
                source = path(project.file("../subspec_dependency"))
            }
            pod("SDWebImage") {
                version = "5.20.0"
            }
        }
    }
    

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

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

Чтобы использовать эти зависимости в коде Kotlin, импортируйте пакеты cocoapods.<library-name>:

import cocoapods.pod_dependency.*
import cocoapods.subspec_dependency.*
import cocoapods.SDWebImage.*

Из пользовательского репозитория Git

Чтобы добавить зависимость от библиотеки Pod, расположенной в пользовательском репозитории Git:

  1. Укажите имя библиотеки Pod в функции pod().

    В блоке конфигурации укажите путь к репозиторию Git: используйте функцию git() в значении параметра source.

    Кроме того, после git() в блоке можно указать следующие параметры:

    • commit — чтобы использовать определенный коммит из репозитория

    • tag — чтобы использовать определенный тег из репозитория

    • branch — чтобы использовать определенную ветку из репозитория

    Функция git() применяет переданные параметры в следующем порядке приоритета: commit, tag, branch. Если параметр не указан, плагин Kotlin использует HEAD из ветки master.

    Можно объединять параметры branch, commit и tag, чтобы получить определенную версию Pod.

  2. Укажите минимальную версию целевой платформы для библиотеки Pod.

    kotlin {
        iosArm64()
    
        cocoapods {
            version = "2.0"
            summary = "CocoaPods test library"
            homepage = "https://github.com/JetBrains/kotlin"
            ios.deploymentTarget = "16.0"
    
            pod("SDWebImage") {
                source = git("https://github.com/SDWebImage/SDWebImage") {
                    tag = "5.20.0"
                }
            }
    
            pod("JSONModel") {
                source = git("https://github.com/jsonmodel/jsonmodel.git") {
                    branch = "key-mapper-class"
                }
            }
    
            pod("CocoaLumberjack") {
                source = git("https://github.com/CocoaLumberjack/CocoaLumberjack.git") {
                    commit = "3e7f595e3a459c39b917aacf9856cd2a48c4dbf3"
                }
            }
        }
    }
    
  3. Чтобы повторно импортировать проект, выберите Сборка | Перезагрузить все проекты Gradle в IntelliJ IDEA (или Файл | Синхронизировать проект с файлами Gradle в Android Studio).

Чтобы использовать эти зависимости в коде Kotlin, импортируйте пакеты cocoapods.<library-name>:

import cocoapods.SDWebImage.*
import cocoapods.JSONModel.*
import cocoapods.CocoaLumberjack.*

Из пользовательского репозитория Podspec

Чтобы добавить зависимость от библиотеки Pod, расположенной в пользовательском репозитории Podspec:

  1. Укажите адрес пользовательского репозитория Podspec с помощью вызова url() внутри блока specRepos {}.

  2. Укажите имя библиотеки Pod в функции pod().

  3. Укажите минимальную версию целевой платформы для библиотеки Pod.

    kotlin {
        iosArm64()
    
        cocoapods {
            version = "2.0"
            summary = "CocoaPods test library"
            homepage = "https://github.com/JetBrains/kotlin"
            ios.deploymentTarget = "16.0"
    
            specRepos {
                url("https://github.com/Kotlin/kotlin-cocoapods-spec.git")
            }
            pod("example")
        }
    }
    
  4. Чтобы повторно импортировать проект, выберите Сборка | Перезагрузить все проекты Gradle в IntelliJ IDEA (или Файл | Синхронизировать проект с файлами Gradle в Android Studio).

Для работы с Xcode укажите расположение спецификаций в начале Podfile:

source 'https://github.com/Kotlin/kotlin-cocoapods-spec.git'

Чтобы использовать эти зависимости в коде Kotlin, импортируйте пакеты cocoapods.<library-name>:

import cocoapods.example.*

С пользовательскими параметрами cinterop

Чтобы добавить зависимость от библиотеки Pod с пользовательскими параметрами cinterop:

  1. Укажите имя библиотеки Pod в функции pod().

  2. В блоке конфигурации добавьте следующие параметры:

    • extraOpts — чтобы указать список параметров для библиотеки Pod. Например, extraOpts = listOf("-compiler-option").

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

    • packageName — чтобы импортировать библиотеку напрямую, используя имя пакета с import <packageName>.

  3. Укажите минимальную версию целевой платформы для библиотеки Pod.

    kotlin {
        iosArm64()
    
        cocoapods {
            version = "2.0"
            summary = "CocoaPods test library"
            homepage = "https://github.com/JetBrains/kotlin"
            ios.deploymentTarget = "16.0"
    
            pod("FirebaseAuth") {
                packageName = "FirebaseAuthWrapper"
                version = "11.7.0"
                extraOpts += listOf("-compiler-option", "-fmodules")
            }
        }
    }
    
  4. Чтобы повторно импортировать проект, выберите Сборка | Перезагрузить все проекты Gradle в IntelliJ IDEA (или Файл | Синхронизировать проект с файлами Gradle в Android Studio).

Чтобы использовать эти зависимости в коде Kotlin, импортируйте пакеты cocoapods.<library-name>:

import cocoapods.FirebaseAuth.*

Если вы используете параметр packageName, библиотеку можно импортировать с помощью имени пакета import <packageName>:

import FirebaseAuthWrapper.Auth
import FirebaseAuthWrapper.User

Поддержка заголовков Objective-C с директивами @import

Эта функция является экспериментальной. В любой момент ее могут удалить или изменить. Используйте ее только для ознакомления. Будем признательны за ваши отзывы в YouTrack.

В заголовках некоторых библиотек Objective-C, в частности тех, которые служат оболочками для библиотек Swift, есть директивы @import. По умолчанию cinterop не поддерживает эти директивы.

Чтобы включить поддержку директив @import, укажите параметр -fmodules в блоке конфигурации функции pod():

kotlin {
    iosArm64()

    cocoapods {
        version = "2.0"
        summary = "CocoaPods test library"
        homepage = "https://github.com/JetBrains/kotlin"
        ios.deploymentTarget = "16.0"

        pod("PodName") {
            version = "1.0.0"
            extraOpts = listOf("-compiler-option", "-fmodules")
        }
    }
}

Совместное использование Kotlin cinterop для зависимых Pod

Если добавить несколько зависимостей от Pod с помощью функции pod(), могут возникнуть проблемы при наличии зависимостей между API этих Pod.

Чтобы в таких случаях код компилировался, используйте функцию useInteropBindingFrom(). При создании привязки для нового Pod она использует привязку cinterop, сгенерированную для другого Pod.

Зависимый Pod следует объявить до настройки зависимости:

// The cinterop of pod("WebImage"):
fun loadImage(): WebImage

// The cinterop of pod("Info"):
fun printImageInfo(image: WebImage)

// Your code:
printImageInfo(loadImage())

Если в этом случае не настроить правильные зависимости между cinterop, код будет некорректным, поскольку тип WebImage будет получен из разных файлов cinterop и, следовательно, из разных пакетов.

Что дальше

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

  • Полная справка по DSL плагина Gradle для CocoaPods

31 марта 2026 г.
Обзор CocoaPods и настройкаИспользование проекта Kotlin в качестве зависимости 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-cocoapods-libraries.html

Spec-Zone.ru

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