Интеграция с CocoaPods
Kotlin/Native предоставляет интеграцию с менеджером зависимостей CocoaPods. Вы можете добавлять зависимости от библиотек Pod, хранящихся в репозитории CocoaPods или локально, а также использовать многоплатформенный проект с нативными таргетами в качестве зависимости CocoaPods (Kotlin Pod).
Вы можете управлять зависимостями Pod напрямую в IntelliJ IDEA и пользоваться всеми дополнительными функциями, такими как подсветка кода и автодополнение. Вы можете собирать весь проект Kotlin с помощью Gradle и никогда не переключаться на Xcode. Используйте Xcode только тогда, когда вам нужно писать код Swift/Objective-C или запускать ваше приложение на симуляторе или устройстве.
В зависимости от вашего проекта и целей, вы можете добавлять зависимости между:
- Проектом Kotlin и библиотекой Pod из репозитория CocoaPods
- Проектом Kotlin и библиотекой Pod, хранящейся локально
- Kotlin Pod и проектом Xcode с одним таргетом или несколькими таргетами
Вы также можете добавить зависимости между Kotlin Pod и несколькими проектами Xcode. Однако в этом случае вам необходимо добавить зависимость, вызвав
pod installвручную для каждого проекта Xcode. В других случаях это происходит автоматически.
Установка менеджера зависимостей CocoaPods и плагина
-
Установите менеджер зависимостей CocoaPods.
$ sudo gem install cocoapods
-
Установите плагин
cocoapods-generate.$ sudo gem install cocoapods-generate
-
В
build.gradle.kts(илиbuild.gradle) вашем проекте IDEA примените плагин CocoaPods и плагин Kotlin Multiplatform.plugins { kotlin("multiplatform") version "1.4.10" kotlin("native.cocoapods") version "1.4.10" } -
Настройте
summary,homepage, иframeworkNameфайлаPodspecв блокеcocoapods.
version— это версия проекта Gradle.plugins { kotlin("multiplatform") version "1.4.10" kotlin("native.cocoapods") version "1.4.10" } // CocoaPods requires the podspec to have a version. version = "1.0" kotlin { cocoapods { // Configure fields required by CocoaPods. summary = "Some description for a Kotlin/Native module" homepage = "Link to a Kotlin/Native module homepage" // You can change the name of the produced framework. // By default, it is the name of the Gradle project. frameworkName = "my_framework" } } -
Переимпортируйте проект.
При применении плагина CocoaPods выполняется следующее:
- Добавляются как
debugиreleaseфреймворки в качестве выходных библиотек для всех таргетов macOS, iOS, tvOS и watchOS. - Создается задача
podspec, которая генерирует файл Podspec для проекта.
Файл Podspec включает путь к выходному фреймворку и этапы скриптов, которые автоматизируют сборку этого фреймворка во время процесса сборки проекта Xcode.
Добавление зависимостей от библиотек Pod
Вы можете добавить зависимости между проектом Kotlin и библиотеками Pod, хранящимися в репозитории CocoaPods и хранящимися локально.
Завершите начальную настройку, и при добавлении новой зависимости и переимпортировании проекта в IntelliJ IDEA новая зависимость будет добавлена автоматически. Дополнительные шаги не требуются.
Добавление зависимости от библиотеки Pod из репозитория CocoaPods
- Добавьте зависимости от библиотеки Pod, которую вы хотите использовать из репозитория CocoaPods, с
pod()доbuild.gradle.kts(build.gradle) вашего проекта.Вы также можете добавлять зависимости от подспецификаций. {:.note} >
kotlin { ios() cocoapods { summary = "CocoaPods test library" homepage = "https://github.com/JetBrains/kotlin" pod("AFNetworking", "~> 4.0.0") pod("SDWebImage/MapKit") } } - Переимпортируйте проект.
Чтобы использовать эти зависимости из кода Kotlin, импортируйте пакеты cocoapods.<library-name>.
import cocoapods.AFNetworking.* import cocoapods.SDWebImage.*
Пример проекта вы можете найти здесь.
Добавление зависимости от локальной библиотеки Pod
- Добавьте зависимость от локальной библиотеки Pod с
pod()доbuild.gradle.kts(build.gradle) вашего проекта.
В качестве третьего параметра укажите путь кPodspecлокального Pod, используяproject.file(..).Вы также можете добавлять локальные зависимости от подспецификаций.
Блокcocoapodsможет включать зависимости от локально хранящихся Pod и Pod из репозитория CocoaPods одновременно.kotlin { ios() cocoapods { summary = "CocoaPods test library" homepage = "https://github.com/JetBrains/kotlin" pod("pod_dependency", "1.0", project.file("../pod_dependency/pod_dependency.podspec")) pod("subspec_dependency/Core", "1.0", project.file("../subspec_dependency/subspec_dependency.podspec")) pod("AFNetworking", "~> 4.0.0") pod("SDWebImage/MapKit") } } - Переимпортируйте проект.
Если вы хотите использовать зависимости от локальных Pod из кода Kotlin, импортируйте соответствующие пакеты.
import cocoapods.pod_dependency.* import cocoapods.subspec_dependency.*
Пример проекта вы можете найти здесь.
Использование проекта Kotlin Gradle в качестве зависимости CocoaPods
Вы можете использовать многоплатформенный проект Kotlin с нативными таргетами в качестве зависимости CocoaPods (Kotlin Pod). Вы можете включить такую зависимость в Podfile проекта Xcode по ее имени и пути к директории проекта, содержащей сгенерированный Podspec. Эта зависимость будет автоматически собираться (и пересобираться) вместе с этим проектом. Такой подход упрощает импорт в Xcode, исключая необходимость ручного написания соответствующих задач Gradle и этапов сборки Xcode.
Вы можете добавлять зависимости между:
Для правильного импорта зависимостей в модуль Kotlin/Native,
Podfileдолжен содержать либоuse_modular_headers!, либоuse_frameworks!директиву.
Добавление зависимости между Kotlin Pod и проектом Xcode с одним таргетом
- Создайте проект Xcode с
Podfileесли вы еще этого не сделали. - Добавьте путь к вашему проекту Xcode
Podfileсpodfile = project.file(..)доbuild.gradle.kts(build.gradle) вашего проекта Kotlin.
Этот шаг помогает синхронизировать ваш проект Xcode с зависимостями Kotlin Pod, вызвавpod installдля вашегоPodfile. - Укажите минимальную версию таргета для библиотеки Pod.
Если вы не укажете минимальную версию таргета, и зависимая библиотека Pod требует более высокую версию deployment target, может возникнуть ошибка.
kotlin { ios() cocoapods { summary = "CocoaPods test library" homepage = "https://github.com/JetBrains/kotlin" ios.deploymentTarget = "13.5" pod("AFNetworking", "~> 4.0.0") podfile = project.file("../ios-app/Podfile") } } -
Добавьте имя и путь к Kotlin Pod, который вы хотите включить в проект Xcode, в
Podfile.use_frameworks! platform :ios, '9.0' target 'ios-app' do pod 'kotlin_library', :path => '../kotlin-library' end - Переимпортируйте проект.
Добавление зависимости между Kotlin Pod и проектом Xcode с несколькими таргетами
- Создайте проект Xcode с
Podfileесли вы еще этого не сделали. - Добавьте путь к вашему проекту Xcode
Podfileсpodfile = project.file(..)доbuild.gradle.kts(build.gradle) вашего проекта Kotlin.
Этот шаг помогает синхронизировать ваш проект Xcode с зависимостями Kotlin Pod, вызвавpod installдля вашегоPodfile. - Добавьте зависимости от библиотек Pod, которые вы хотите использовать в вашем проекте, с
pod(). -
Для каждого таргета укажите минимальную версию таргета для библиотеки Pod.
kotlin { ios() tvos() cocoapods { summary = "CocoaPods test library" homepage = "https://github.com/JetBrains/kotlin" ios.deploymentTarget = "13.5" tvos.deploymentTarget = "13.4" pod("AFNetworking", "~> 4.0.0") podfile = project.file("../severalTargetsXcodeProject/Podfile") // specify the path to Podfile } } -
Добавьте имя и путь к Kotlin Pod, который вы хотите включить в проект Xcode, в
Podfile.target 'iosApp' do use_frameworks! platform :ios, '13.5' # Pods for iosApp pod 'kotlin_library', :path => '../kotlin-library' end target 'TVosApp' do use_frameworks! platform :tvos, '13.4' # Pods for TVosApp pod 'kotlin_library', :path => '../kotlin-library' end - Переимпортируйте проект.
Пример проекта вы можете найти здесь.
© 2010–2020 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/reference/native/cocoapods.html