画像で説明したように、Swiftにポッドライブラリを作成します。これには、Objective-cで記述された別のポッドライブラリ依存関係があります。
これでSwiftでObjective-Cコードを使用するには、ブリッジファイルが必要で、それも作成しました。しかし、それをポッドのビルドフェーズに設定すると、このエラーが発生しました<unknown>:0: error: using bridging headers with framework targets is unsupported
インターネットで.hファイルをpod-umbrella.hファイルに挿入する必要があるというヒントを得ましたが、それでもエラーInclude of non-modular header inside framework module 'DemoPod'
が発生しました
あなたが遊んでみたいなら、これが私のdemopodプロジェクトです。
デモポッドプロジェクト
[〜#〜] edit [〜#〜]Ashsisの提案に従って、以下のコードをDemoPod.modulemapに追加しました
framework module AdaptiveCard {
umbrella header "/Users/jageen.shukla/Documents/Project/ai answer/DemoPod/Example/Pods/AdaptiveCards/AdaptiveCards.framework/Headers/ACFramework.h"
requires ios
export *
}
しかし、それでもモジュール「AdaptiveCard」が見つからないターゲットプロジェクトでエラーが発生するため、プロジェクトをビルドできません。
DemoPod.modulemap
のコードを変更します
framework module DemoPod {
umbrella header "DemoPod-umbrella.h"
// Solution 2
framework module AdaptiveCard {
umbrella header "/Users/jageen.shukla/Downloads/DemoPod/Example/Pods/AdaptiveCards/AdaptiveCards.framework/Headers/ACFramework.h"
export *
module * { export * }
}
// ----
export *
module * { export * }
}
ブリッジヘッダーは、SwiftのObjective CおよびCPPファイルにアクセスするために、App TargetおよびApp Testターゲットでのみ推奨されます。モジュールマップを使用して、ObjcおよびCPP機能をSwiftライブラリに公開する必要があります。これは、静的ライブラリまたはフレームワークに関しては、ここでモジュールマップの使用方法をコード実装で確認してください。 https:/ /github.com/ashislaha/Swift-ObjectiveC-Interoperability
エラーが示すように、ブリッジングヘッダーはフレームワークでは許可されず、アプリケーションでのみ許可されます。
詳細なドキュメントは ここ です
Swiftコードは、フレームワークのパブリックアンブレラヘッダーに含まれているobjcからすべてにアクセスできるようになります
// In this header, you should import all the public headers of your framework using statements like #import <YourFramework/PublicHeader.h>
フレームワークをコンパイルするには、ビルド設定で追加した場所からブリッジヘッダーを削除する必要があります。
あなたは今何をすべきですか?
これを行う:
含まれているファイルをフレームワークの「ビルドフェーズ」の「ヘッダー」セクションで公開します。
クリーンして再構築します。
注:「アンブレラヘッダーファイル」は、一般にフレームワークのすべてのパブリックヘッダーを表すファイル([ProductName] .hという名前)です。これは通常、フレームワークに含まれる他のヘッダーへの#importステートメントの単なるリストです。 XcodeでUIKit.hを開くと、アンブレラファイルの良い例が表示されます。