Edit Page

CocoaPods Gradle plugin DSL 参考文档

最终更新: 2024/03/21

Kotlin CocoaPods Gradle plugin 是一个用来创建 Podspec 文件的工具. 将你的 Kotlin 项目与 CocoaPods 依赖项 管理器 集成时, 会需要这些文件.

本文档将会介绍, 使用 CocoaPods 集成 时, 你可以使用的 Kotlin CocoaPods Gradle plugin 的所有代码段, 函数, 属性.

启用 plugin

要启用 CocoaPods plugin, 请在 build.gradle(.kts) 文件添加以下代码:

plugins {
   kotlin("multiplatform") version "1.9.23"
   kotlin("native.cocoapods") version "1.9.23"
}

plugin 版本与 Kotlin 发布版本 相同. 最新的稳定版本是 1.9.23.

cocoapods 代码段

cocoapods 代码段是用于 CocoaPods 配置的的最顶层代码段. 它包含 Pod 的一般信息, 包括必须信息, 例如 Pod 版本, 概述, homepage, 以及可选的功能特性.

在这个代码段内部, 你可以使用以下代码段, 函数, 和属性:

名称 描述
version Pod 版本. 如果不指定, 会使用 Gradle 项目的版本. 如果 Gradle 项目的版本也没有设置, 会发生错误.
summary 通过这个项目构建得到的 Pod 的描述信息, 必须指定.
homepage 通过这个项目构建得到的 Pod 的 homepage 链接, 必须指定.
authors 通过这个项目构建得到的 Pod 的作者.
podfile 配置已有的 Podfile 文件.
noPodspec() 设置 plugin 不要为 cocoapods 小节生成 Podspec 文件.
name 通过这个项目构建得到的 Pod 的名称. 如果不指定, 会使用项目的名称.
license 通过这个项目构建得到的 Pod 的许可协议类型, 以及文字.
framework framework 代码段对 plugin 生成的框架进行配置.
source 通过这个项目构建得到的 Pod 的位置.
extraSpecAttributes 配置其他 Podspec 属性, 例如 librariesvendored_frameworks.
xcodeConfigurationToNativeBuildType 将自定义的 Xcode 配置映射到 NativeBuildType: "Debug" 映射为 NativeBuildType.DEBUG, "Release" 映射为 NativeBuildType.RELEASE.
publishDir 配置 Pod 发布时的输出目录.
pods 返回 Pod 依赖项列表.
pod() 向通过这个项目构建得到的 Pod 添加一个 CocoaPods 依赖项.
specRepos 添加一个使用 url() 的特定的仓库. 当使用私有 Pod 作为依赖项时, 需要这样的设置. 详情请参见 CocoaPods 文档.

编译目标

  • ios
  • osx
  • tvos
  • watchos

对每个编译目标, 可以使用 deploymentTarget 属性来对 Pod 库指定编译目标最低版本.

指定这个属性后, CocoaPods 会对所有的编译目标添加 debugrelease 框架, 作为输出的二进制文件.

kotlin {
    ios()
   
    cocoapods {
        version = "2.0"
        name = "MyCocoaPod"
        summary = "CocoaPods test library"
        homepage = "https://github.com/JetBrains/kotlin"
        
        extraSpecAttributes["vendored_frameworks"] = 'CustomFramework.xcframework'
        license = "{ :type => 'MIT', :text => 'License text'}"
        source = "{ :git => 'git@github.com:vkormushkin/kmmpodlibrary.git', :tag => '$version' }"
        authors = "Kotlin Dev"
        
        specRepos {
            url("https://github.com/Kotlin/kotlin-cocoapods-spec.git")
        }
        pod("example")
        
        xcodeConfigurationToNativeBuildType["CUSTOM_RELEASE"] = NativeBuildType.RELEASE
   }
}

framework 代码段

framework 代码段嵌套在 cocoapods 代码段内, 用来配置通过项目构建的 Pod 的框架属性.

注意, baseName 是必须指定的项目.

名称 描述
baseName 框架名称, 必须指定. frameworkName 已被废弃, 请改为使用这个属性.
isStatic 定义框架的链接类型. 默认为 dynamic.
transitiveExport 启用依赖项导出.
kotlin {
    cocoapods {
        framework {
            baseName = "MyFramework"
            isStatic = false
            export(project(":anotherKMMModule"))
            transitiveExport = true
        }
    }
}

pod() 函数

pod() 函数调用会对通过这个项目构建得到的 Pod 添加一个 CocoaPods 依赖项. 每个依赖项都需要一个单独的 pod() 函数调用.

在函数参数中, 你可以指定一个 Pod 库的名称. 在这个函数的配置代码段中, 还可以指定其他参数, 例如库的 versionsource:

名称 描述
version 库的版本. 要使用库的最新版本, 请省略这个参数.
source 可以使用以下几种方式来配置 Pod:
通过 git() 函数, 使用 Git 仓库中的 Pod. 在 git() 之后的代码段中, 你可以指定 commit 来使用特定的 commit, 可以指定 tag 来使用特定的 tag, 可以指定 branch 来使用 特定的 branch
通过 path() 函数, 使用本地仓库中的 Pod
通过 url() 函数, 使用打包的(tar, jar, zip) Pod 文件夹
packageName 指定包名称.
extraOpts 为 Pod 库指定选项列表. 例如, 特定的参数: extraOpts = listOf("-compiler-option")
linkOnly 让 CocoaPods plugin 使用动态框架(Dynamic Framework)的 Pod 依赖项, 不生成 cinterop 绑定. 如果对静态框架(Static Framework)使用这个选项, 会删除整个 Pod 依赖项.
interopBindingDependencies 包含对其他 Pod 的依赖项列表. 在对新的 Pod 构建 Kotlin 绑定时会使用这个列表.
useInteropBindingFrom() 指定用做依赖项的已存在的 Pod 的名称. 这个 Pod 需要在函数执行之前声明. 这个函数让 CocoaPods plugin 在对新的 Pod 构建 Kotlin 绑定时, 使用已存在的 Pod 的绑定.
kotlin {
    ios()
   
    cocoapods {
        summary = "CocoaPods test library"
        homepage = "https://github.com/JetBrains/kotlin"
      
        ios.deploymentTarget = "13.5"
      
        pod("pod_dependency") {
            version = "1.0"
            linkOnly = true
            source = path(project.file("../pod_dependency"))
        }
    }
}