Spec-Zone.ru › Kotlin 1.9

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

Для добавления зависимостей между проектом Kotlin и библиотекой Pod необходимо завершить начальную настройку. Затем вы можете добавить зависимости от разных типов библиотек Pod.

При добавлении новой зависимости и повторном импорте проекта в IntelliJ IDEA новая зависимость будет автоматически добавлена. Дополнительные шаги не требуются.

Для использования вашего проекта Kotlin с Xcode необходимо внесите изменения в файл Podfile вашего проекта.

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

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

Вы можете найти пример проекта здесь.

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

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

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

    Вы можете добавить зависимости от подспецификаций.

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

    kotlin {
        ios()
    
        cocoapods {
            ios.deploymentTarget = "13.5"
    
            summary = "CocoaPods test library"
            homepage = "https://github.com/JetBrains/kotlin"
    
            pod("Alamofire") {
                version = "5.7.0"
            }
        }
    }
    
  3. Переимпортируйте проект.

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

import cocoapods.Alamofire.*

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

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

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

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

  2. Укажите минимальную версию целевой разработки для библиотеки 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"
            }
        }
    }
    

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

  3. Переимпортируйте проект.

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

import cocoapods.pod_dependency.*
import cocoapods.subspec_dependency.*
import cocoapods.Alamofire.*

Из пользовательского репозитория 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 {
        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"
                }
            }
        }
    }
    
  3. Переимпортируйте проект.

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

import cocoapods.Alamofire.*
import cocoapods.JSONModel.*
import cocoapods.CocoaLumberjack.*

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

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

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

  3. Укажите минимальную версию целевой разработки для библиотеки 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")
        }
    }
    
  4. Переимпортируйте проект.

Для корректной работы с Xcode необходимо указать расположение спецификаций в начале файла Podfile. Например,

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

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

import cocoapods.example.*

С настраиваемыми параметрами cinterop

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

    В блоке конфигурации укажите параметры cinterop:

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

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

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

    kotlin {
        ios()
    
        cocoapods {
            summary = "CocoaPods test library"
            homepage = "https://github.com/JetBrains/kotlin"
    
            ios.deploymentTarget = "13.5"
    
            pod("YandexMapKit") {
                packageName = "YandexMK"
            }
        }
    }
    
  3. Переимпортируйте проект.

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

import cocoapods.YandexMapKit.*

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

import YandexMK.YMKPoint
import YandexMK.YMKDistance

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

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

Некоторые библиотеки 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 и, следовательно, из разных пакетов.

Последнее изменение: 14 июля 2023 г.
Обзор и настройка CocoaPods Использование проекта Kotlin Gradle в качестве зависимости CocoaPods

© 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

Spec-Zone.ru

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