直接統合
- ローカルマシンで既にiOSをターゲットとするKotlin Multiplatformプロジェクトをセットアップしている場合。
- Kotlin MultiplatformプロジェクトにCocoaPodsの依存関係がない場合。
Kotlin MultiplatformプロジェクトとiOSプロジェクト間でコードを共有しながら同時に開発したい場合は、特別なスクリプトを使用して直接統合をセットアップできます。
このスクリプトは、XcodeでKotlinフレームワークをiOSプロジェクトに接続するプロセスを自動化します。
このスクリプトは、Xcode環境向けに特別に設計されたembedAndSignAppleFrameworkForXcode
Gradleタスクを使用します。セットアップ中に、iOSアプリビルドの実行スクリプトフェーズに追加します。その後、iOSアプリのビルドを実行する前に、Kotlinアーティファクトがビルドされ、派生データに含まれます。
一般的に、このスクリプトは次のことを行います。
- コンパイルされたKotlinフレームワークを、iOSプロジェクト構造内の正しいディレクトリにコピーします。
- 埋め込まれたフレームワークのコード署名プロセスを処理します。
- Kotlinフレームワークのコード変更がXcodeのiOSアプリに反映されるようにします。
セットアップ方法
現在CocoaPodsプラグインを使用してKotlinフレームワークを接続している場合は、まず移行してください。プロジェクトにCocoaPodsの依存関係がない場合は、このステップをスキップしてください。
CocoaPodsプラグインからの移行
CocoaPodsプラグインから移行するには:
Xcodeで、Product | Clean Build Folder または ショートカットを使用してビルドディレクトリをクリーンアップします。
Podfileのあるディレクトリで、以下のコマンドを実行します。
nonepod deintegrate
build.gradle(.kts)
ファイルからcocoapods {}
ブロックを削除します。.podspec
ファイルとPodfileを削除します。
フレームワークをプロジェクトに接続する
マルチプラットフォームプロジェクトから生成されたKotlinフレームワークをXcodeプロジェクトに接続するには:
embedAndSignAppleFrameworkForXcode
タスクは、binaries.framework
構成オプションが宣言されている場合にのみ登録されます。Kotlin Multiplatformプロジェクトで、build.gradle.kts
ファイル内のiOSターゲット宣言を確認してください。Xcodeで、プロジェクト名をダブルクリックしてiOSプロジェクト設定を開きます。
左側のTargetsセクションでターゲットを選択し、Build Phasesタブに移動します。
+ をクリックし、New Run Script Phaseを選択します。
以下のスクリプトを調整し、その結果を実行スクリプトフィールドに貼り付けます。
bashcd "<Path to the root of the multiplatform project>" ./gradlew :<Shared module name>:embedAndSignAppleFrameworkForXcode
cd
コマンドでは、Kotlin Multiplatformプロジェクトのルートへのパス(例:$SRCROOT/..
)を指定します。./gradlew
コマンドでは、共有モジュールの名前(例::shared
または:composeApp
)を指定します。
Based on dependency analysisオプションを無効にします。
これにより、Xcodeはすべてのビルド中にスクリプトを実行し、出力依存関係の不足について毎回警告を発しなくなります。
Run ScriptフェーズをCompile Sourcesフェーズの前に移動して、より上位に配置します。
Build Settingsタブで、Build Optionsの下にあるUser Script Sandboxingオプションを無効にします。
サンドボックスを最初に無効にせずにiOSプロジェクトをビルドした場合、Gradleデーモンの再起動が必要になることがあります。 サンドボックス化された可能性のあるGradleデーモンプロセスを停止します。
shell./gradlew --stop
Xcodeでプロジェクトをビルドします。すべて正しく設定されていれば、プロジェクトは正常にビルドされます。
デフォルトの
Debug
またはRelease
とは異なるカスタムビルド構成を使用している場合は、Build SettingsタブのUser-Definedの下にKOTLIN_FRAMEWORK_BUILD_TYPE
設定を追加し、Debug
またはRelease
に設定してください。
次のステップ
Swiftパッケージマネージャーを使用している場合も、ローカル統合を活用できます。ローカルパッケージにKotlinフレームワークの依存関係を追加する方法を学ぶ。