Skip to content

CocoaPods GradleプラグインDSLリファレンス

Kotlin CocoaPods Gradleプラグインは、Podspecファイルを作成するためのツールです。これらのファイルは、KotlinプロジェクトをCocoaPods依存関係マネージャーと統合するために必要です。

このDSLリファレンスでは、CocoaPods統合を設定する際に使用できるKotlin CocoaPods Gradleプラグインの主要なブロック、関数、およびプロパティを一覧表示します。

プラグインを有効にする

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のライセンス、その種類、およびテキスト。
frameworkフレームワークブロックは、プラグインによって生成されるフレームワークを設定します。
sourceこのプロジェクトからビルドされるPodの場所。
extraSpecAttributeslibrariesvendored_frameworksのような他のPodspec属性を設定します。
xcodeConfigurationToNativeBuildTypeカスタムXcode設定をNativeBuildTypeにマッピングします: "Debug"をNativeBuildType.DEBUGに、"Release"をNativeBuildType.RELEASEに。
publishDirPod公開用の出力ディレクトリを設定します。
podsPod依存関係のリストを返します。
pod()このプロジェクトからビルドされるPodにCocoaPods依存関係を追加します。
specReposurl()を使用して仕様リポジトリを追加します。これはプライベートなPodが依存関係として使用される場合に必要です。CocoaPodsドキュメントを参照してください。

ターゲット

iOSmacOStvOSwatchOS
iosArm64macosArm64tvosArm64watchosArm64
iosX64macosX64tvosX64watchosX64
iosSimulatorArm64tvosSimulatorArm64watchosSimulatorArm64
watchosArm32
watchosDeviceArm64

各ターゲットについて、deploymentTargetプロパティを使用してPodライブラリの最小ターゲットバージョンを指定します。

適用されると、CocoaPodsはdebugおよびreleaseフレームワークの両方をすべてのターゲットの出力バイナリとして追加します。

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()関数呼び出しは、このプロジェクトからビルドされるPodにCocoaPods依存関係を追加します。各依存関係には個別の関数呼び出しが必要です。

関数パラメータでPodライブラリの名前を、その設定ブロックでライブラリのversionsourceのような追加のパラメータ値を指定できます。

名前説明
versionライブラリのバージョン。ライブラリの最新バージョンを使用するには、パラメータを省略します。
sourcePodを以下から設定します:
  • git()を使用してGitリポジトリから。git()後のブロックでは、特定のコミットを使用するためにcommitを、特定のタグを使用するためにtagを、リポジリの特定のブランチを使用するためにbranchを指定できます。
  • path()を使用してローカルリポジトリから。
packageNameパッケージ名を指定します。
extraOptsPodライブラリのオプションのリストを指定します。例として、特定のフラグ:
Kotlin
linkOnlyCocoaPodsプラグインに、cinteropバインディングを生成せずに動的フレームワークを持つPod依存関係を使用するように指示します。静的フレームワークで使用された場合、このオプションはPod依存関係を完全に削除します。
interopBindingDependencies他のPodへの依存関係のリストが含まれます。このリストは、新しいPodのKotlinバインディングを構築する際に使用されます。
useInteropBindingFrom()依存関係として使用される既存のPodの名前を指定します。このPodは、関数実行前に宣言されている必要があります。この関数は、新しいPodのバインディングを構築する際に、既存のPodのKotlinバインディングを使用するようにCocoaPodsプラグインに指示します。
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"))
        }
    }
}

次は何ですか