Добавление зависимостей от библиотек Pod
В проект Kotlin можно добавить зависимости от библиотек Pod из разных источников.
Чтобы добавить зависимость от Pod, вызовите функцию pod() в файле build.gradle(.kts) общего модуля. Для каждой зависимости требуется отдельный вызов функции. Параметры зависимости можно указать в блоке конфигурации функции.
Когда вы добавите новую зависимость и повторно импортируете проект в IDE, библиотека подключится автоматически.
Чтобы использовать проект Kotlin с Xcode, сначала измените Podfile проекта.
Из репозитория CocoaPods
Чтобы добавить зависимость от библиотеки Pod, расположенной в репозитории CocoaPods:
-
Укажите имя библиотеки Pod в функции
pod().В блоке конфигурации можно указать версию библиотеки с помощью параметра
version. Чтобы использовать последнюю версию библиотеки, этот параметр можно не указывать. -
Укажите минимальную версию целевой платформы для библиотеки 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" } } } Чтобы повторно импортировать проект, выберите Сборка | Перезагрузить все проекты Gradle в IntelliJ IDEA (или Файл | Синхронизировать проект с файлами Gradle в Android Studio).
Чтобы использовать эти зависимости в коде Kotlin, импортируйте пакеты cocoapods.<library-name>:
import cocoapods.SDWebImage.*
Из локально сохраненной библиотеки
Чтобы добавить зависимость от локально сохраненной библиотеки Pod:
-
Укажите имя библиотеки Pod в функции
pod().В блоке конфигурации укажите путь к локальной библиотеке Pod: используйте функцию
path()в значении параметраsource. -
Укажите минимальную версию целевой платформы для библиотеки 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" } } } Чтобы повторно импортировать проект, выберите Сборка | Перезагрузить все проекты Gradle в IntelliJ IDEA (или Файл | Синхронизировать проект с файлами Gradle в Android Studio).
Чтобы использовать эти зависимости в коде Kotlin, импортируйте пакеты cocoapods.<library-name>:
import cocoapods.pod_dependency.* import cocoapods.subspec_dependency.* import cocoapods.SDWebImage.*
Из пользовательского репозитория Git
Чтобы добавить зависимость от библиотеки Pod, расположенной в пользовательском репозитории Git:
-
Укажите имя библиотеки Pod в функции
pod().В блоке конфигурации укажите путь к репозиторию Git: используйте функцию
git()в значении параметраsource.Кроме того, после
git()в блоке можно указать следующие параметры:commit— чтобы использовать определенный коммит из репозиторияtag— чтобы использовать определенный тег из репозиторияbranch— чтобы использовать определенную ветку из репозитория
Функция
git()применяет переданные параметры в следующем порядке приоритета:commit,tag,branch. Если параметр не указан, плагин Kotlin используетHEADиз веткиmaster. -
Укажите минимальную версию целевой платформы для библиотеки 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" } } } } Чтобы повторно импортировать проект, выберите Сборка | Перезагрузить все проекты Gradle в IntelliJ IDEA (или Файл | Синхронизировать проект с файлами Gradle в Android Studio).
Чтобы использовать эти зависимости в коде Kotlin, импортируйте пакеты cocoapods.<library-name>:
import cocoapods.SDWebImage.* import cocoapods.JSONModel.* import cocoapods.CocoaLumberjack.*
Из пользовательского репозитория Podspec
Чтобы добавить зависимость от библиотеки Pod, расположенной в пользовательском репозитории Podspec:
Укажите адрес пользовательского репозитория Podspec с помощью вызова
url()внутри блокаspecRepos {}.Укажите имя библиотеки Pod в функции
pod().-
Укажите минимальную версию целевой платформы для библиотеки 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") } } Чтобы повторно импортировать проект, выберите Сборка | Перезагрузить все проекты Gradle в IntelliJ IDEA (или Файл | Синхронизировать проект с файлами Gradle в Android Studio).
Чтобы использовать эти зависимости в коде Kotlin, импортируйте пакеты cocoapods.<library-name>:
import cocoapods.example.*
С пользовательскими параметрами cinterop
Чтобы добавить зависимость от библиотеки Pod с пользовательскими параметрами cinterop:
Укажите имя библиотеки Pod в функции
pod().-
В блоке конфигурации добавьте следующие параметры:
-
extraOpts— чтобы указать список параметров для библиотеки Pod. Например,extraOpts = listOf("-compiler-option"). packageName— чтобы импортировать библиотеку напрямую, используя имя пакета сimport <packageName>.
-
-
Укажите минимальную версию целевой платформы для библиотеки 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") } } } Чтобы повторно импортировать проект, выберите Сборка | Перезагрузить все проекты 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
В заголовках некоторых библиотек 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 и, следовательно, из разных пакетов.
Что дальше
© 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