Kotlinv2.4.0

CocoaPods Gradle 插件 DSL 参考

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

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

启用插件

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

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

插件版本与 Kotlin 发布版本一致。最新的稳定版本是 2.3.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()向此项目构建的 Pod 添加一个 CocoaPods 依赖项。
specRepos使用 url() 添加规格仓库。当使用私有 Pod 作为依赖项时,这是必需的。有关更多信息,请参阅 CocoaPods 文档

目标

iOSmacOStvOSwatchOS
iosArm64macosArm64tvosArm64watchosArm64
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 => '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定义框架链接类型。默认为动态。
transitiveExport启用依赖项导出。
kotlin
kotlin {
    cocoapods {
        version = "2.0"
        framework {
            baseName = "MyFramework"
            isStatic = false
            export(project(":anotherKMMModule"))
            transitiveExport = true
        }
    }
}

pod() 函数

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

您可以在函数参数中指定 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"))
        }
    }
}

下一步