My Swift/iOS9フレームワーク 'viewer_protocol'は別の外部Objective-Cフレームワークを使用します( CocoaAsyncSocket )。Carthageを使用してCocoaAsyncSocketを構築しています。 :私のフレームワークXcodeプロジェクト内に、問題なくフレームワークを使用したサンプルアプリがあります。
ここで、Carthageを使用していますが、別のXcodeプロジェクトでフレームワークを使用します。フレームワークのみを依存関係として含め、Carthageは依存関係をCocoaAsyncSocketに自動的に解決します。両方のフレームワークをこの新しいXcodeプロジェクトに埋め込み、アプリをビルドします。ここではすべて正常に動作します-取り除くことができない警告が1つあります。
/Users/hibento/Repositories/viewer_protocol/<module-includes>:1:1:
Umbrella header for module 'viewer_protocol' does not include header 'GCDAsyncSocket.h'
これは私のフレームワークヘッダーです。
#import <UIKit/UIKit.h>
//! Project version number for viewer_protocol.
FOUNDATION_EXPORT double viewer_protocolVersionNumber;
//! Project version string for viewer_protocol.
FOUNDATION_EXPORT const unsigned char viewer_protocolVersionString[];
// In this header, you should import all the public headers of your framework
using statements like #import <viewer_protocol/PublicHeader.h>
#import <CocoaAsyncSocket/CocoaAsyncSocket.h>
ご覧のとおり、CocoaAsyncSocket.hがインポートされています。さらに、私のフレームワーク内にはCocoaAsyncSocket.hファイルが含まれています。
ここで何が欠けていますか?私はフレームワーク内で他のいくつかの外部フレームワークを使用していますが、警告はありません-これらの外部フレームワークはすべてSwift-CocoaAsyncSocketは純粋なObjective-Cです。
これは私のフレームワークmodule.modulemapです:
framework module viewer_protocol {
umbrella header "viewer_protocol.h"
export *
module * { export * }
}
module viewer_protocol.Swift {
header "viewer_protocol-Swift.h"
}
更新
私は解決策を見つけました:フレームワークヘッダーのインポートステートメントを
#import <CocoaAsyncSocket/CocoaAsyncSocket.h>
に
#import "CocoaAsyncSocket/CocoaAsyncSocket.h"
これで、Xcodeはヘッダーファイルを検出し、警告が消えます。
私は最近同じ問題に遭遇しました。ターゲットメンバーシップでヘッダーファイルをpublic
に設定したようですが、アンブレラヘッダーでは公開されていません。 project
の代わりにpublic
アクセスでヘッダーファイルを作成することによる問題を修正しました。
今日も同じ問題がありました
問題は
モジュールの傘ヘッダー 'HockeySDK'にはヘッダー 'BITHockeyBaseViewController.h'は含まれません
そして解決策は
1.プロジェクトをビルドして実行し、実行Report Navigator
2.警告を見て、クリックして詳細を展開
以下のスクリーンショットでわかるように、変更する必要のあるファイル名になります
したがって、AppDelegate.mファイルのimportステートメントを更新しました
新規
#import "HockeySDK/HockeySDK.h"
古い
#import <HockeySDK/HockeySDK.h>
そして、問題がなくなった..
これが誰かを助けることを願っています。解決のためにここに来ている人。
同じ問題がありました。古いビルドファイルに関連しているようです。
標準のXcodeの問題修正プログラムは私のために働いた:
私にとっての解決策は次のとおりでした:
1)各Objective Cフレームワークには、以下をすべて含む1つのヘッダーファイルがあります。
#import ...
#import ...
#import ...
2)このファイルが欠落しているヘッダーをインポートすることを確認してください。
3)プロジェクトを再度ビルドします。警告が削除されます。
ヘッダーが次の場所でパブリックに設定されている場合の完全性のために:
ビルドフェーズ>ヘッダー
あなたはどちらか
他の人が言及したように、インポートをメインヘッダーに含めます
OR
公開する必要がない場合は、そのヘッダーを「プライベート」に移動します
あるいは、フレームワークのビルドフェーズのPublic
エリア内でファイルを公開している場合がありますが、実際にはProject
エリアに戻す必要があります。
これらのファイルをフレームワークのアンブレラヘッダー内に入れたくないので、一般にアクセスできるようにするには、これを元に戻すことができます。
Goto Framework-> Target-> Build Phasesとドラッグして、不要なヘッダーファイルをPublicからProjectに移動します。
最近これを入手しましたが、これはDerivedDataの破損によるものです。そのフォルダを削除すると、問題が修正されました。
その他:私の場合、フレームワークから公開したいヘッダーを「プロジェクト」から「パブリック」に既に移動しています(フレームワークターゲットのビルドフェーズ)
次に、Xcodeがこの警告を出しました。
Xcodeは、フレームワークで作成されたパブリックヘッダーファイルに#import "警告のヘッダー名>"を追加する必要があることを伝えているため、(フレームワークの)クライアントはこのヘッダーを認識します。
修正:
1。フレームワークパブリックヘッダーファイル(フレームワークを作成したときにxcodeによって作成されたもの)に移動します。
2。 #import "警告のヘッダー名.h"を追加します。
この投稿を見てください:
新しいモジュールのインポートの概念について説明します。私は独自のカスタムフレームワークを持っていて、objective-cフレームワークをインポートする新しい方法を採用した後
古い:#import <MyFramework/MyFramework.h>
新着: @import MyFramework;
警告を処理しました/
私の場合(Obj-cフレームワーク):
Umbrella header for module 'opus' does not include header 'opus_multistream.h'
変更する必要がありました:
@import opus.opus_defines;
に
@import opus;
(私は#import "....h"
または #import <....h>
フレームワークの場合)