Skip to content

直接統合

これはローカルな統合方法です。以下の場合に利用できます。
  • ローカルマシンで既にiOSをターゲットとするKotlin Multiplatformプロジェクトをセットアップしている場合。
  • Kotlin MultiplatformプロジェクトにCocoaPodsの依存関係がない場合。

最適な統合方法を選択する

Kotlin MultiplatformプロジェクトとiOSプロジェクト間でコードを共有しながら同時に開発したい場合は、特別なスクリプトを使用して直接統合をセットアップできます。

このスクリプトは、XcodeでKotlinフレームワークをiOSプロジェクトに接続するプロセスを自動化します。

Direct integration diagram

このスクリプトは、Xcode環境向けに特別に設計されたembedAndSignAppleFrameworkForXcode Gradleタスクを使用します。セットアップ中に、iOSアプリビルドの実行スクリプトフェーズに追加します。その後、iOSアプリのビルドを実行する前に、Kotlinアーティファクトがビルドされ、派生データに含まれます。

一般的に、このスクリプトは次のことを行います。

  • コンパイルされたKotlinフレームワークを、iOSプロジェクト構造内の正しいディレクトリにコピーします。
  • 埋め込まれたフレームワークのコード署名プロセスを処理します。
  • Kotlinフレームワークのコード変更がXcodeのiOSアプリに反映されるようにします。

セットアップ方法

現在CocoaPodsプラグインを使用してKotlinフレームワークを接続している場合は、まず移行してください。プロジェクトにCocoaPodsの依存関係がない場合は、このステップをスキップしてください

CocoaPodsプラグインからの移行

CocoaPodsプラグインから移行するには:

  1. Xcodeで、Product | Clean Build Folder または ショートカットを使用してビルドディレクトリをクリーンアップします。

  2. Podfileのあるディレクトリで、以下のコマンドを実行します。

    none
    pod deintegrate
  3. build.gradle(.kts)ファイルからcocoapods {}ブロックを削除します。

  4. .podspecファイルとPodfileを削除します。

フレームワークをプロジェクトに接続する

マルチプラットフォームプロジェクトから生成されたKotlinフレームワークをXcodeプロジェクトに接続するには:

  1. embedAndSignAppleFrameworkForXcodeタスクは、binaries.framework構成オプションが宣言されている場合にのみ登録されます。Kotlin Multiplatformプロジェクトで、build.gradle.ktsファイル内のiOSターゲット宣言を確認してください。

  2. Xcodeで、プロジェクト名をダブルクリックしてiOSプロジェクト設定を開きます。

  3. 左側のTargetsセクションでターゲットを選択し、Build Phasesタブに移動します。

  4. + をクリックし、New Run Script Phaseを選択します。

    Add run script phase

  5. 以下のスクリプトを調整し、その結果を実行スクリプトフィールドに貼り付けます。

    bash
    cd "<Path to the root of the multiplatform project>"
    ./gradlew :<Shared module name>:embedAndSignAppleFrameworkForXcode
    • cdコマンドでは、Kotlin Multiplatformプロジェクトのルートへのパス(例: $SRCROOT/..)を指定します。
    • ./gradlewコマンドでは、共有モジュールの名前(例: :sharedまたは:composeApp)を指定します。

    Add the script

  6. Based on dependency analysisオプションを無効にします。

    これにより、Xcodeはすべてのビルド中にスクリプトを実行し、出力依存関係の不足について毎回警告を発しなくなります。

  7. Run ScriptフェーズをCompile Sourcesフェーズの前に移動して、より上位に配置します。

    Drag the Run Script phase

  8. Build Settingsタブで、Build Optionsの下にあるUser Script Sandboxingオプションを無効にします。

    User Script Sandboxing

    サンドボックスを最初に無効にせずにiOSプロジェクトをビルドした場合、Gradleデーモンの再起動が必要になることがあります。 サンドボックス化された可能性のあるGradleデーモンプロセスを停止します。

    shell
    ./gradlew --stop

  9. Xcodeでプロジェクトをビルドします。すべて正しく設定されていれば、プロジェクトは正常にビルドされます。

デフォルトのDebugまたはReleaseとは異なるカスタムビルド構成を使用している場合は、Build SettingsタブのUser-Definedの下にKOTLIN_FRAMEWORK_BUILD_TYPE設定を追加し、DebugまたはReleaseに設定してください。

次のステップ

Swiftパッケージマネージャーを使用している場合も、ローカル統合を活用できます。ローカルパッケージにKotlinフレームワークの依存関係を追加する方法を学ぶ