Обзор и настройка CocoaPods
Kotlin/Native обеспечивает интеграцию с менеджером зависимостей CocoaPods. Вы можете добавлять зависимости от библиотек Pod, а также использовать многоплатформенный проект с нативными целями в качестве зависимости CocoaPods.
Вы можете управлять зависимостями Pod непосредственно в IntelliJ IDEA и наслаждаться дополнительными функциями, такими как подсветка кода и автодополнение. Вы можете собрать весь проект Kotlin с помощью Gradle и никогда не переключаться на Xcode.
Используйте Xcode только тогда, когда вам нужно написать код Swift/Objective-C или запустить приложение на симуляторе или устройстве. Для корректной работы с Xcode необходимо обновить ваш Podfile.
В зависимости от вашего проекта и целей, вы можете добавить зависимости между проектом Kotlin и библиотекой Pod, а также проектом Kotlin Gradle и проектом Xcode.
Настройка среды для работы с CocoaPods
-
Установите менеджер зависимостей CocoaPods:
$ sudo gem install cocoapods
-
Установите плагин
cocoapods-generate:$ sudo gem install cocoapods-generate
Добавление и настройка плагина Kotlin CocoaPods Gradle
-
В
build.gradle(.kts)вашего проекта примените плагин CocoaPods, а также плагин Kotlin Multiplatform:plugins { kotlin("multiplatform") version "1.6.20" kotlin("native.cocoapods") version "1.6.20" } -
Настройте
version,summary,homepage, иbaseNameфайла Podspec в блокеcocoapods:plugins { kotlin("multiplatform") version "1.6.20" kotlin("native.cocoapods") version "1.6.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 // Dynamic framework support isStatic = false // Dependency export export(project(":anotherKMMModule")) transitiveExport = false // This is default. // Bitcode embedding embedBitcode(BITCODE) } // Maps custom Xcode configuration to NativeBuildType xcodeConfigurationToNativeBuildType["CUSTOM_DEBUG"] = NativeBuildType.DEBUG xcodeConfigurationToNativeBuildType["CUSTOM_RELEASE"] = NativeBuildType.RELEASE } } Переимпортируйте проект.
Сгенерируйте обёртку Gradle, чтобы избежать проблем совместимости во время сборки Xcode.
При применении плагина CocoaPods выполняется следующее:
Добавляет как
debug, так иreleaseфреймворки в качестве выходных бинарных файлов для всех целей macOS, iOS, tvOS и watchOS.Создаёт задачу
podspec, которая генерирует файл Podspec для проекта.
Файл Podspec включает путь к выходному фреймворку и стадии скриптов, которые автоматизируют сборку этого фреймворка во время процесса сборки проекта Xcode.
Обновление Podfile для Xcode
Если вы хотите импортировать свой проект Kotlin в проект Xcode, вам необходимо внести некоторые изменения в ваш Podfile:
-
Если ваш проект имеет зависимости от Git, HTTP или пользовательских репозиториев Podspec, вы также должны указать путь к Podspec в Podfile.
Например, если вы добавляете зависимость от
podspecWithFilesExample, укажите путь к Podspec в Podfile:target 'ios-app' do # ... other depedencies ... 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 depedencies ... pod 'example' end
Если вы не внесёте эти изменения в Podfile, задача podInstall завершится с ошибкой, и плагин CocoaPods отобразит сообщение об ошибке в журнале.
Посмотрите ветку withXcproject образцового проекта, в котором показан пример интеграции Xcode с существующим проектом Xcode под названием kotlin-cocoapods-xcproj.
© 2010–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/native-cocoapods.html