Kotlin Gradle プロジェクトを CocoaPods の依存関係として使用する
Kotlin Multiplatformプロジェクトをネイティブターゲットとして CocoaPods の依存関係で使用するには、初期構成を完了させてください。
生成された Podspec が含まれるプロジェクトディレクトリへの名前とパスで、Xcode プロジェクトの Podfile
にそのような依存関係を含めることができます。
この依存関係は、このプロジェクトとともに自動的にビルド(およびリビルド)されます。このようなアプローチにより、対応する Gradle タスクと Xcode のビルド手順を手動で記述する必要がなくなり、Xcode へのインポートが簡素化されます。
Kotlin Gradle プロジェクトと、1つまたは複数のターゲットを持つ Xcode プロジェクトとの間に依存関係を追加できます。Gradle プロジェクトと複数の Xcode プロジェクトの間に依存関係を追加することも可能です。ただし、この場合、各 Xcode プロジェクトに対して手動で pod install
を呼び出すことによって依存関係を追加する必要があります。それ以外の場合は、自動的に実行されます。
- Kotlin/Native モジュールに依存関係を正しくインポートするには、
Podfile
にuse_modular_headers!
ディレクティブまたはuse_frameworks!
ディレクティブのいずれかが含まれている必要があります。 - 最小デプロイメントターゲットバージョンを指定せず、依存関係 Pod がより高いデプロイメントターゲットを必要とする場合は、 エラーが発生します。
1つのターゲットを持つ Xcode プロジェクト
-
まだ Xcode プロジェクトを作成していない場合は、
Podfile
を使用して作成します。 -
アプリケーションターゲットの Build Options で User Script Sandboxing が無効になっていることを確認します。
-
Kotlin プロジェクトの
build.gradle(.kts)
ファイルに、Xcode プロジェクトのPodfile
へのパスをpodfile = project.file(..)
で追加します。 この手順は、Podfile
に対してpod install
を呼び出すことによって、Xcode プロジェクトを Gradle プロジェクトの依存関係と同期させるのに役立ちます。 -
Pod ライブラリの最小デプロイメントターゲットバージョンを指定します。
kotlin {
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")
}
} -
Xcode プロジェクトに含める Gradle プロジェクトの名前とパスを
Podfile
に追加します。use_frameworks!
platform :ios, '16.0'
target 'ios-app' do
pod 'kotlin_library', :path => '../kotlin-library'
end -
プロジェクトディレクトリで
pod install
を実行します。pod install
を初めて実行すると、.xcworkspace
ファイルが作成されます。このファイルには、元の.xcodeproj
と CocoaPods プロジェクトが含まれています。 -
.xcodeproj
を閉じて、代わりに新しい.xcworkspace
ファイルを開きます。こうすることで、プロジェクトの依存関係に関する問題を回避できます。 -
IntelliJ IDEA で Reload All Gradle Projects(または Android Studio で Sync Project with Gradle Files)を実行して、プロジェクトを再度インポートします。
複数のターゲットを持つ Xcode プロジェクト
-
まだ Xcode プロジェクトを作成していない場合は、
Podfile
を使用して作成します。 -
Kotlin プロジェクトの
build.gradle(.kts)
に、Xcode プロジェクトのPodfile
へのパスをpodfile = project.file(..)
で追加します。 この手順は、Podfile
に対してpod install
を呼び出すことによって、Xcode プロジェクトを Gradle プロジェクトの依存関係と同期させるのに役立ちます。 -
プロジェクトで使用する Pod ライブラリへの依存関係を
pod()
で追加します。 -
ターゲットごとに、Pod ライブラリの最小デプロイメントターゲットバージョンを指定します。
kotlin {
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 = project.file("../severalTargetsXcodeProject/Podfile") // specify the path to the Podfile
}
} -
Xcode プロジェクトに含める Gradle プロジェクトの名前とパスを
Podfile
に追加します。target '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 で Reload All Gradle Projects(または Android Studio で Sync Project with Gradle Files)を実行して、プロジェクトを再度インポートします。
サンプルプロジェクトはこちらにあります。
次のステップ
Xcode プロジェクトのビルドフェーズにカスタムビルドスクリプトを追加する方法については、フレームワークを iOS プロジェクトに接続するを参照してください。