63

私の Swift/iOS9 フレームワーク「viewer_protocol」は、別の外部の Objective-C フレームワーク ( CocoaAsyncSocket ) を使用します。Carthage を使用して CocoaAsyncSocket を構築しています。これまでのところ、すべて正常に動作しています。フレームワーク Xcode プロジェクト内に問題なくフレームワークを使用するサンプル アプリがあります。

Carthage を使用していますが、フレームワークを別の Xcode プロジェクトで使用したいと考えています。フレームワークのみを依存関係として含めると、Carthage は依存関係を自動的に CocoaAsyncSocket に解決します。この新しい Xcode プロジェクトに両方のフレームワークを組み込み、アプリをビルドしました。

/Users/John/Repositories/my_project/<module-includes>:1:1: 
Umbrella header for module 'my_project' does not include header 'GCDAsyncSocket.h'

これは私のフレームワークヘッダーです:

#import <UIKit/UIKit.h>

//! Project version number for my_project.
FOUNDATION_EXPORT double my_projectVersionNumber;

//! Project version string for my_project.
FOUNDATION_EXPORT const unsigned char my_projectVersionString[];

// In this header, you should import all the public headers of your framework     
using statements like #import <my_project/PublicHeader.h>
#import <CocoaAsyncSocket/CocoaAsyncSocket.h>

ご覧のとおり、CocoaAsyncSocket.h がインポートされています。さらに、フレームワーク内に CocoaAsyncSocket.h ファイルが含まれています。

私のフレームワークのフォルダー

ここで何が欠けていますか?フレームワーク内で他のいくつかの外部フレームワークを使用していますが、警告はありません。これらの外部フレームワークはすべて Swift で記述されています。CocoaAsyncSocket は純粋な Objective-C です。

これは私のフレームワークmodule.modulemapです:

 framework module my_project {
   umbrella header "my_project.h"

   export *
   module * { export * }
 }

 module viewer_protocol.Swift {
     header "my_project-Swift.h"
 }

アップデート

解決策を見つけました: フレームワーク ヘッダーの import ステートメントを

#import <CocoaAsyncSocket/CocoaAsyncSocket.h>

#import "CocoaAsyncSocket/CocoaAsyncSocket.h"

これで、Xcode がヘッダー ファイルを見つけ、警告が消えます。

4

12 に答える 12

41

私は最近同じ問題に遭遇しました。どうやらpublicターゲット メンバーシップのようにヘッダー ファイルを設定していたようですが、アンブレラ ヘッダーでは公開されていませんでした。projectの代わりに access を使用してヘッダー ファイルを作成することにより、問題が修正されましたpublic

于 2016-08-03T09:49:06.317 に答える
27

今日も同じ問題がありました

モジュール ' HockeySDK ' の Umbrella ヘッダーにヘッダー ' BITHockeyBaseViewController.h 'が含まれていません

そして解決策は

1. プロジェクトをビルドして実行し、Report Navigatorに移動します。

2.警告を見て、クリックして詳細を展開します

以下のスクリーンショットに示すように、変更する必要があるファイル名になります。

ここに画像の説明を入力

だから私はAppDelegate.mファイルのインポートステートメントを更新しました

新しい

#import "HockeySDK/HockeySDK.h"

#import <HockeySDK/HockeySDK.h>

そして問題はなくなりました..

これが誰かを助けることを願っています。解決のためにここに来ている人。

于 2016-03-10T08:47:31.097 に答える
25

同じ問題がありました。古いビルドファイルに関連しているようです。

標準の Xcode 問題修正プログラムが機能しました。

  1. クリーン プロジェクト ( Product> Clean Build Folder)
  2. 派生データの削除
  3. Xcode を再起動する
于 2016-08-21T23:58:39.663 に答える
16

私にとっての解決策は次のとおりです。

1) 各 Objective C フレームワークには、次のすべてを含む 1 つのヘッダー ファイルがあります。

#import ...
#import ...
#import ...

2) このファイルが不足しているヘッダーをインポートすることを確認します。

3) プロジェクトを再度ビルドすると、警告が削除されます。

于 2016-03-23T08:40:22.327 に答える
1

その他の場合:私の場合、フレームワークから公開したいヘッダーを「プロジェクト」から「パブリック」にすでに移動しています(フレームワークターゲットのビルドフェーズ)

その後、Xcode はこの警告を出しました。

Xcode は、フレームワークで作成されたパブリック ヘッダー ファイルに #import "name of header in the warning> も追加する必要があることを伝えているため、(フレームワークの) クライアントはこのヘッダーを認識します。

修正方法:
1. フレームワークのパブリック ヘッダー ファイル (フレームワークを作成したときに xcode によって作成されたもの) に移動します。
2. #import "the-name-of-the-header-in-the-warning.h" を追加

于 2018-10-16T12:51:43.430 に答える
-1

アーカイブビルドエラーを修正しようとすると、このエラーと投稿が発生しました

私の解決策は本当にシンプルでしたが、理解するのに永遠にかかりました.

  • $ pod install を実行すると、.xcodeproj ファイルと同じディレクトリにワークスペースが生成されました。
  • ただし、親ディレクトリとして使用するワークスペースを既に作成していました。
  • それで、私は単に古いワークスペースを削除し、ポッドが作成したものを使用しました

ここに画像の説明を入力


これが誰かを助けることを願っています! GL HF!

于 2016-08-29T07:36:29.647 に答える