Skip to content

CocoaPods Gradle 插件 DSL 参考

Kotlin CocoaPods Gradle 插件是一个用于创建 Podspec 文件的工具。这些文件是将你的 Kotlin 项目与 CocoaPods 依赖项管理器集成所必需的。

本 DSL 参考列出了 Kotlin CocoaPods Gradle 插件中的主要块、函数和属性,你可以在设置 CocoaPods 集成时使用它们。

启用插件

要应用 CocoaPods 插件,请将以下行添加到 build.gradle(.kts) 文件中:

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

插件版本与 Kotlin 发布版本匹配。最新稳定版本为 2.2.0。

cocoapods {}

cocoapods {} 块是 CocoaPods 配置的顶层块。它包含有关 Pod 的通用信息,包括必需信息(例如 Pod 版本、摘要和主页)以及可选特性。

你可以在其中使用以下块、函数和属性:

名称描述
versionPod 的版本。如果未指定此项,将使用 Gradle 项目版本。如果未配置这些属性中的任何一个,将收到错误。
summary从此项目构建的 Pod 的必需描述。
homepage从此项目构建的 Pod 的主页的必需链接。
authors指定从此项目构建的 Pod 的作者。
podfile配置现有的 Podfile。
noPodspec()配置插件不生成用于 cocoapods 部分的 Podspec 文件。
name从此项目构建的 Pod 的名称。如果未提供,则使用项目名称。
license从此项目构建的 Pod 的许可证、其类型和文本。
frameworkframework 块配置了由插件生成的框架。
source从此项目构建的 Pod 的位置。
extraSpecAttributes配置其他 Podspec 属性,例如 librariesvendored_frameworks
xcodeConfigurationToNativeBuildType将自定义 Xcode 配置映射到 NativeBuildType:将 "Debug" 映射到 NativeBuildType.DEBUG,将 "Release" 映射到 NativeBuildType.RELEASE
publishDir配置 Pod 发布到输出目录。
pods返回 Pod 依赖项的列表。
pod()添加 CocoaPods 依赖项到从此项目构建的 Pod。
specRepos使用 url() 添加规范版本库。当私有 Pod 用作依赖项时,此项是必需的。关于更多信息,请参见 CocoaPods 文档

目标

iOSmacOStvOSwatchOS
iosArm64macosArm64tvosArm64watchosArm64
iosX64macosX64tvosX64watchosX64
iosSimulatorArm64tvosSimulatorArm64watchosSimulatorArm64
watchosArm32
watchosDeviceArm64

对于每个目标,使用 deploymentTarget 属性指定 Pod 库的最低目标版本。

应用后,CocoaPods 会为所有目标添加 debugrelease 框架作为输出二进制文件。

kotlin
kotlin {
    iosArm64()
   
    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 => '[email protected]: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定义框架链接类型。默认情况下是动态的。
transitiveExport启用依赖项导出。
kotlin
kotlin {
    cocoapods {
        version = "2.0"
        framework {
            baseName = "MyFramework"
            isStatic = false
            export(project(":anotherKMMModule"))
            transitiveExport = true
        }
    }
}

pod() 函数

pod() 函数调用会添加 CocoaPods 依赖项到从此项目构建的 Pod。每个依赖项都需要单独的函数调用。

你可以在函数形参中指定 Pod 库的名称,并在其配置块中指定附加形参值,例如库的 versionsource

名称描述
version库版本。要使用库的最新版本,请省略形参。
source配置 Pod 的来源:
  • 使用 git() 的 Git 版本库。在 git() 之后的块中,你可以指定 commit 以使用特定提交、tag 以使用特定标签,以及 branch 以使用版本库中的特定分支
  • 使用 path() 的本地版本库
packageName指定包名称。
extraOpts指定 Pod 库的选项的列表。例如,特定标志:
Kotlin
linkOnly指示 CocoaPods 插件使用动态框架的 Pod 依赖项,而不生成 cinterop 绑定。如果与静态框架一起使用,该选项将完全移除 Pod 依赖项。
interopBindingDependencies包含其他 Pod 的依赖项列表。当为新 Pod 构建 Kotlin 绑定时,将使用此列表。
useInteropBindingFrom()指定用作依赖项的现有 Pod 的名称。此 Pod 应在函数执行前声明。该函数指示 CocoaPods 插件在为新 Pod 构建绑定时使用现有 Pod 的 Kotlin 绑定。
kotlin
kotlin {
    iosArm64()
    
    cocoapods {
        version = "2.0"
        summary = "CocoaPods test library"
        homepage = "https://github.com/JetBrains/kotlin"
        ios.deploymentTarget = "16.0"
      
        pod("pod_dependency") {
            version = "1.0"
            extraOpts += listOf("-compiler-option")
            linkOnly = true
            source = path(project.file("../pod_dependency"))
        }
    }
}

接下来