Spec-Zone.ru › Kotlin 1.4

Интеграция с 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 и плагина

  1. Установите менеджер зависимостей CocoaPods.

     $ sudo gem install cocoapods
    
  2. Установите плагин cocoapods-generate.

     $ sudo gem install cocoapods-generate
    
  3. В build.gradle.kts (или build.gradle) вашем проекте IDEA примените плагин CocoaPods и плагин Kotlin Multiplatform.

     plugins {
        kotlin("multiplatform") version "1.4.10"
        kotlin("native.cocoapods") version "1.4.10"
     }
    
  4. Настройте 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"
         }
     }
    
  5. Переимпортируйте проект.

При применении плагина CocoaPods выполняется следующее:

  • Добавляются как debug и release фреймворки в качестве выходных библиотек для всех таргетов macOS, iOS, tvOS и watchOS.
  • Создается задача podspec, которая генерирует файл Podspec для проекта.

Файл Podspec включает путь к выходному фреймворку и этапы скриптов, которые автоматизируют сборку этого фреймворка во время процесса сборки проекта Xcode.

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

Вы можете добавить зависимости между проектом Kotlin и библиотеками Pod, хранящимися в репозитории CocoaPods и хранящимися локально.

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

Добавление зависимости от библиотеки Pod из репозитория CocoaPods

  1. Добавьте зависимости от библиотеки 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")
         }
     }
    
  2. Переимпортируйте проект.

Чтобы использовать эти зависимости из кода Kotlin, импортируйте пакеты cocoapods.<library-name>.

import cocoapods.AFNetworking.*
import cocoapods.SDWebImage.*

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

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

  1. Добавьте зависимость от локальной библиотеки 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")
         }
     }
    
  2. Переимпортируйте проект.

Если вы хотите использовать зависимости от локальных Pod из кода Kotlin, импортируйте соответствующие пакеты.

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

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

Использование проекта Kotlin Gradle в качестве зависимости CocoaPods

Вы можете использовать многоплатформенный проект Kotlin с нативными таргетами в качестве зависимости CocoaPods (Kotlin Pod). Вы можете включить такую зависимость в Podfile проекта Xcode по ее имени и пути к директории проекта, содержащей сгенерированный Podspec. Эта зависимость будет автоматически собираться (и пересобираться) вместе с этим проектом. Такой подход упрощает импорт в Xcode, исключая необходимость ручного написания соответствующих задач Gradle и этапов сборки Xcode.

Вы можете добавлять зависимости между:

  • Kotlin Pod и проектом Xcode с одним таргетом
  • Kotlin Pod и проектом Xcode с несколькими таргетами

Для правильного импорта зависимостей в модуль Kotlin/Native, Podfile должен содержать либо use_modular_headers!, либо use_frameworks! директиву.

Добавление зависимости между Kotlin Pod и проектом Xcode с одним таргетом

  1. Создайте проект Xcode с Podfile если вы еще этого не сделали.
  2. Добавьте путь к вашему проекту Xcode Podfile с podfile = project.file(..) до build.gradle.kts (build.gradle) вашего проекта Kotlin.
    Этот шаг помогает синхронизировать ваш проект Xcode с зависимостями Kotlin Pod, вызвав pod install для вашего Podfile.
  3. Укажите минимальную версию таргета для библиотеки 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")
         }
     }
    
  4. Добавьте имя и путь к Kotlin Pod, который вы хотите включить в проект Xcode, в Podfile.

     use_frameworks!
        
     platform :ios, '9.0'
        
     target 'ios-app' do
             pod 'kotlin_library', :path => '../kotlin-library'
     end
    
  5. Переимпортируйте проект.

Добавление зависимости между Kotlin Pod и проектом Xcode с несколькими таргетами

  1. Создайте проект Xcode с Podfile если вы еще этого не сделали.
  2. Добавьте путь к вашему проекту Xcode Podfile с podfile = project.file(..) до build.gradle.kts (build.gradle) вашего проекта Kotlin.
    Этот шаг помогает синхронизировать ваш проект Xcode с зависимостями Kotlin Pod, вызвав pod install для вашего Podfile.
  3. Добавьте зависимости от библиотек Pod, которые вы хотите использовать в вашем проекте, с pod().
  4. Для каждого таргета укажите минимальную версию таргета для библиотеки 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
         }
     }
    
  5. Добавьте имя и путь к 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
    
  6. Переимпортируйте проект.

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

© 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

Spec-Zone.ru

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