KotlinプロジェクトをCocoaPodsの依存関係として使用する
- Podの依存関係を追加する前に、初期設定を完了してください。
- サンプルプロジェクトは GitHubリポジトリ で確認できます。
Kotlinプロジェクト全体をPodの依存関係として使用できます。そのためには、プロジェクトのPodfileにその依存関係を含め、生成されたPodspecを含むプロジェクトディレクトリへの名前とパスを指定する必要があります。
CocoaPodsの統合アプローチは、直接統合で使用される
embedAndSignAppleFrameworkForXcodeメカニズムと併用することはできません。
この依存関係は、プロジェクトと共に自動的にビルド(および再ビルド)されます。このアプローチにより、対応するGradleタスクやXcodeのビルドステップを手動で記述する必要がなくなり、Xcodeへのインポートが簡素化されます。
1つまたは複数のターゲットを持つXcodeプロジェクトとKotlinプロジェクトの間に依存関係を追加できます。また、Kotlinプロジェクトと複数のXcodeプロジェクトの間に依存関係を追加することも可能です。ただし、その場合はXcodeプロジェクトごとに手動で pod install を呼び出す必要があります。単一のXcodeプロジェクトの場合は、自動的に行われます。
- Kotlin/Nativeモジュールに依存関係を正しくインポートするには、Podfileに
use_modular_headers!またはuse_frameworks!ディレクティブが含まれている必要があります。- 最小デプロイターゲット(minimum deployment target)のバージョンを指定せず、依存するPodがより高いデプロイターゲットを必要とする場合、エラーが発生します。
1つのターゲットを持つXcodeプロジェクト
1つのターゲットを持つXcodeプロジェクトで、KotlinプロジェクトをPodの依存関係として使用するには:
Xcodeプロジェクトがない場合は作成します。
Xcodeで、アプリケーションターゲットの Build Options にある User Script Sandboxing を無効にしてください。

KotlinプロジェクトのiOS部分にPodfileを作成します。
共有モジュール(shared module)の
build.gradle(.kts)ファイルで、podfile = project.file()を使用してPodfileへのパスを追加します。このステップにより、Podfileに対して
pod installを呼び出すことで、XcodeプロジェクトをKotlinプロジェクトの依存関係と同期させることができます。Podライブラリの最小デプロイターゲットのバージョンを指定します。
kotlinkotlin { iosArm64() cocoapods { version = "2.0" summary = "CocoaPods test library" homepage = "https://github.com/JetBrains/kotlin" ios.deploymentTarget = "16.0" pod("SDWebImage") { version = "5.20.0" } podfile = project.file("../ios-app/Podfile") } }Podfileに、Xcodeプロジェクトに含めたいKotlinプロジェクトの名前とパスを追加します。
rubytarget 'ios-app' do use_frameworks! platform :ios, '16.0' # Pods for iosApp pod 'kotlin_library', :path => '../kotlin-library' endプロジェクトディレクトリで
pod installを実行します。初めて
pod installを実行すると、.xcworkspaceファイルが作成されます。このファイルには、元の.xcodeprojとCocoaPodsプロジェクトが含まれています。.xcodeprojを閉じ、代わりに新しい.xcworkspaceファイルを開きます。これにより、プロジェクトの依存関係に関する問題を回避できます。IntelliJ IDEAで Build | Reload All Gradle Projects を実行します(Android Studioの場合は File | Sync Project with Gradle Files)。これにより、プロジェクトが再インポートされます。
複数のターゲットを持つXcodeプロジェクト
複数のターゲットを持つXcodeプロジェクトで、KotlinプロジェクトをPodの依存関係として使用するには:
Xcodeプロジェクトがない場合は作成します。
KotlinプロジェクトのiOS部分にPodfileを作成します。
共有モジュール(shared module)の
build.gradle(.kts)ファイルで、podfile = project.file()を使用してプロジェクトのPodfileへのパスを追加します。このステップにより、Podfileに対して
pod installを呼び出すことで、XcodeプロジェクトをKotlinプロジェクトの依存関係と同期させることができます。pod()を使用して、プロジェクトで使用したいPodライブラリへの依存関係を追加します。各ターゲットに対して、Podライブラリ의 最小デプロイターゲットのバージョンを指定します。
kotlinkotlin { iosArm64() tvosArm64() cocoapods { version = "2.0" summary = "CocoaPods test library" homepage = "https://github.com/JetBrains/kotlin" ios.deploymentTarget = "16.0" tvos.deploymentTarget = "16.0" pod("SDWebImage") { version = "5.20.0" } // Podfileへのパスを指定 podfile = project.file("../severalTargetsXcodeProject/Podfile") } }Podfileに、Xcodeプロジェクトに含めたいKotlinプロジェクトの名前とパスを追加します。
rubytarget 'iosApp' do use_frameworks! platform :ios, '16.0' # Pods for iosApp pod 'kotlin_library', :path => '../kotlin-library' end target 'TVosApp' do use_frameworks! platform :tvos, '16.0' # Pods for TVosApp pod 'kotlin_library', :path => '../kotlin-library' endプロジェクトディレクトリで
pod installを実行します。初めて
pod installを実行すると、.xcworkspaceファイルが作成されます。このファイルには、元の.xcodeprojとCocoaPodsプロジェクトが含まれています。.xcodeprojを閉じ、代わりに新しい.xcworkspaceファイルを開きます。これにより、プロジェクトの依存関係に関する問題を回避できます。IntelliJ IDEAで Build | Reload All Gradle Projects を実行します(Android Studioの場合は File | Sync Project with Gradle Files)。これにより、プロジェクトが再インポートされます。
