KC Blog

【Compose Multiplatform】CMPプロジェクトでのCocoaPodsの使用とCocoaPodsなしでiOS Swift/Obj-Cを使用する方法

3 min read
CrossPlatform#CMP#Kotlin

はじめに

両プラットフォーム向けのクロスプラットフォームアプリを開発する際 現在の公式ソリューションは まだ完全に包括的ではないかもしれません そのため、一部の機能では 元のプラットフォームへブリッジバックし そのプラットフォームのネイティブコードを使用する必要があります これをどのように実装できるでしょうか?

{% include table/compose-multiplatform-category.html %}

CocoaPodsの使用

CocoaPods設定の追加
libs.version.tomlに設定を追加

build.gradle.ktsで

cocoapodsブロックを追加し

使用したいPodライブラリ依存関係 pod("Google-Mobile-Ads-SDK") を追加

および PodFile の場所 podfile = project.file("../iosApp/Podfile") を指定

通常はiOSプロジェクトの下にあります

KMM公式サイトでプロジェクトを生成した場合

デフォルト名は iosApp です

公式サイトでは、以下のタイプのPodライブラリ依存関係を追加できると記載されています

  • CocoaPodsリポジトリから
  • ローカルに保存されたライブラリ
  • カスタムGitリポジトリ
  • カスタムPodspecリポジトリ
  • カスタムcinteropオプション付き

iosAppプロジェクトの下でPodfileを設定

その後

iosAppプロジェクトで pod install を使用して設定をインストール

既にインストールされている場合は pod install --repo-update を使用

または pod deintegrate してから再インストール

最後に ./gradlew build を実行

成功すれば、KotlinからiOSのブリッジコードをインポートできます

CocoaPodsなしでKotlinでiOSフレームワークを使用する

CocoaPodsを使用したくない場合

cinteropを使用してObjective-CまたはSwift宣言用のKotlinブリッジを作成できます

これによりKotlinからそれらを呼び出すことができます

ステップ1.

../composeApp/nativeInterop/cinterop/xxx.def.def ファイルを作成

(実際のニーズに応じて内容を記述)

ステップ2.

Build.gradle.kts のiOS設定に以下のコードを追加

使用したいフレームワークはcocoapodsでインストール後にパスを見つけることもできます

または独自の.swiftブリッジを実装することもできます

まとめ

  • しかし、現在のテストに基づくと

cocoapods設定を通じて直接転送されたiOSネイティブコードは

現段階では完全に転送できません

例えば、Google-Mobile-Ads-SDKを使用する場合、すべての機能が解決できるわけではありません

  • そのため、.defを使用して自分で転送する必要があります

しかしこれは結局iOSネイティブコードを書く必要があることと同じです