【Compose Multiplatform】CMPプロジェクトでのCocoaPodsの使用とCocoaPodsなしでiOS Swift/Obj-Cを使用する方法
両プラットフォーム向けのクロスプラットフォームアプリを開発する際 現在の公式ソリューションは まだ完全に包括的ではないかもしれません そのため、一部の機能では 元のプラットフォームへブリッジバックし そのプラットフォームのネイティブコードを使用する必要があります これをどのように実装できるでしょうか?
目錄
- 【Compose Multiplatform】專案轉移探討與開發指南
- 【Compose Multiplatform】手機使用依賴注入Koin
- 【Compose Multiplatform 】跨平台App但Android需要context作法並搭配Koin
- 【Compose Multiplatform】手機本地持久化儲存DataStore實作
- 【Compose Multiplatform】手機資料庫SqlDelight實作
- 【Compose Multiplatform】CMP中使用ROOM開發資料庫 - [KSP2] Annotation value is missing in nested annotations
- 【Compose Multiplatform】CMP專案中導入CocoaPods及無CocoaPods情況下使用IOS Swift/Obj-C
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を使用したくない場合
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ネイティブコードを書く必要があることと同じです