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

はじめに

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

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ネイティブコードを書く必要があることと同じです

You might also enjoy