Добавление зависимостей от библиотеки Pod
Для добавления зависимостей между проектом Kotlin и библиотекой Pod необходимо завершить начальную настройку. Затем вы можете добавить зависимости от разных типов библиотек Pod.
При добавлении новой зависимости и повторном импорте проекта в IntelliJ IDEA новая зависимость будет автоматически добавлена. Дополнительные шаги не требуются.
Для использования вашего проекта Kotlin с Xcode необходимо внесите изменения в файл Podfile вашего проекта.
Проект Kotlin требует вызова функции pod() в build.gradle(.kts) для добавления зависимости Pod. Каждая зависимость требует отдельного вызова функции. Параметры зависимости можно указать в блоке конфигурации функции.
Вы можете найти пример проекта здесь.
Из репозитория CocoaPods
-
Укажите имя библиотеки Pod в функции
pod().В блоке конфигурации вы можете указать версию библиотеки с помощью параметра
version. Чтобы использовать последнюю версию библиотеки, вы можете опустить этот параметр. -
Укажите минимальную версию целевой разработки для библиотеки Pod.
kotlin { ios() cocoapods { ios.deploymentTarget = "13.5" summary = "CocoaPods test library" homepage = "https://github.com/JetBrains/kotlin" pod("Alamofire") { version = "5.7.0" } } } Переимпортируйте проект.
Для использования этих зависимостей из кода Kotlin импортируйте пакеты cocoapods.<library-name>:
import cocoapods.Alamofire.*
Из локальной библиотеки
-
Укажите имя библиотеки Pod в функции
pod().В блоке конфигурации укажите путь к локальной библиотеке Pod: используйте функцию
path()в значении параметраsource. -
Укажите минимальную версию целевой разработки для библиотеки Pod.
kotlin { ios() cocoapods { summary = "CocoaPods test library" homepage = "https://github.com/JetBrains/kotlin" ios.deploymentTarget = "13.5" pod("pod_dependency") { version = "1.0" source = path(project.file("../pod_dependency")) } pod("subspec_dependency/Core") { version = "1.0" source = path(project.file("../subspec_dependency")) } pod("Alamofire") { version = "5.7.0" } } } Переимпортируйте проект.
Для использования этих зависимостей из кода Kotlin импортируйте пакеты cocoapods.<library-name>:
import cocoapods.pod_dependency.* import cocoapods.subspec_dependency.* import cocoapods.Alamofire.*
Из пользовательского репозитория Git
-
Укажите имя библиотеки Pod в функции
pod().В блоке конфигурации укажите путь к репозиторию Git: используйте функцию
git()в значении параметраsource.Кроме того, вы можете указать следующие параметры в блоке после
git():commit— для использования конкретного коммита из репозиторияtag— для использования конкретной метки из репозиторияbranch— для использования конкретной ветки из репозитория
Функция
git()отдаёт приоритет переданным параметрам в следующем порядке:commit,tag,branch. Если параметр не указан, плагин Kotlin используетHEADиз веткиmaster. -
Укажите минимальную версию целевой разработки для библиотеки Pod.
kotlin { ios() cocoapods { summary = "CocoaPods test library" homepage = "https://github.com/JetBrains/kotlin" ios.deploymentTarget = "13.5" pod("Alamofire") { source = git("https://github.com/Alamofire/Alamofire") { tag = "5.7.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" } } } } Переимпортируйте проект.
Для использования этих зависимостей из кода Kotlin импортируйте пакеты cocoapods.<library-name>:
import cocoapods.Alamofire.* import cocoapods.JSONModel.* import cocoapods.CocoaLumberjack.*
Из пользовательского репозитория Podspec
Укажите адрес HTTP пользовательского репозитория Podspec с помощью
url()внутри блокаspecRepos.Укажите имя библиотеки Pod в функции
pod().-
Укажите минимальную версию целевой разработки для библиотеки Pod.
kotlin { ios() cocoapods { summary = "CocoaPods test library" homepage = "https://github.com/JetBrains/kotlin" ios.deploymentTarget = "13.5" specRepos { url("https://github.com/Kotlin/kotlin-cocoapods-spec.git") } pod("example") } } Переимпортируйте проект.
Для использования этих зависимостей из кода Kotlin импортируйте пакеты cocoapods.<library-name>:
import cocoapods.example.*
С настраиваемыми параметрами cinterop
-
Укажите имя библиотеки Pod в функции
pod().В блоке конфигурации укажите параметры cinterop:
extraOpts— для указания списка параметров для библиотеки Pod. Например, конкретные флаги:extraOpts = listOf("-compiler-option").packageName— для указания имени пакета. Если вы укажете это, вы можете импортировать библиотеку с помощью имени пакета:import <packageName>.
-
Укажите минимальную версию целевой разработки для библиотеки Pod.
kotlin { ios() cocoapods { summary = "CocoaPods test library" homepage = "https://github.com/JetBrains/kotlin" ios.deploymentTarget = "13.5" pod("YandexMapKit") { packageName = "YandexMK" } } } Переимпортируйте проект.
Для использования этих зависимостей из кода Kotlin импортируйте пакеты cocoapods.<library-name>:
import cocoapods.YandexMapKit.*
Если вы используете параметр packageName, вы можете импортировать библиотеку с помощью имени пакета import <packageName>:
import YandexMK.YMKPoint import YandexMK.YMKDistance
Поддержка заголовков Objective-C с директивами @import
Некоторые библиотеки Objective-C, особенно те, которые служат оболочками для библиотек Swift, имеют директивы @import в своих заголовках. По умолчанию cinterop не поддерживает эти директивы.
Чтобы включить поддержку директивы @import , укажите параметр -fmodules в блоке конфигурации функции pod():
kotlin {
ios()
cocoapods {
summary = "CocoaPods test library"
homepage = "https://github.com/JetBrains/kotlin"
ios.deploymentTarget = "13.5"
pod("PodName") {
extraOpts = listOf("-compiler-option", "-fmodules")
}
}
}
Обмен Kotlin cinterop между зависимыми библиотеками Pod
Если вы добавляете несколько зависимостей на библиотеки Pod с использованием функции pod() , могут возникнуть проблемы, когда существуют зависимости между API ваших библиотек Pod.
Чтобы код компилировался в таких случаях, используйте функцию useInteropBindingFrom() . Она использует привязку cinterop, сгенерированную для другой библиотеки Pod, при построении привязки для новой библиотеки 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–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/native-cocoapods-libraries.html