204

CocoaPodsを使用したiOSプロジェクトがあります。別の開発者が同じプロジェクトに取り組み始めるまで、すべてがスムーズに機能していました。彼はいくつかの変更を加え(私が知る限り、コードのみ)、リポジトリに新しいブランチを作成しました。彼のブランチをチェックアウトしてビルドしようとしましたが、エラーが発生します:ASLogger/ASLogger.hファイルが見つかりません。

プロジェクト全体を削除して新しいコピーを作成し、「podsinstall」を使用しても。ビルドの失敗はまだあります。問題がどこにあるのか分かりますか?さらに情報が必要な場合は、お問い合わせください。

4

29 に答える 29

96

アップデート

元の回答からこれを更新しました。これは反対票を獲得したので、これが役立つことを願っています。もしそうなら、うまくいけば、それは私の投票を取り戻すでしょう.

ヘッダーがインポートされていない場合は、HEADER_SEARCH_PATHS. ビルド設定のヘッダー検索パスに追加$(inherited)して、CocoaPods の .xcconfig ファイルに含まれる検索パスが取り込まれるようにしてください。

これにより、競合が解消され、ソースが正しくインポートされます。

于 2012-08-27T13:19:54.377 に答える
83

1.チェック

ビルド設定 -> 検索パス -> ユーザー ヘッダー検索パス ->

  • "${PODS_ROOT}/" 再帰

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力 ここに画像の説明を入力

podfile2.設定されている場合は、インポートスタイル(KEY POINT)を確認してください

use_frameworks!

あなたのものFile-Bridging-Header.hでは、フォーマッタはこれを好むはずです

#import "MBProgressHUD.h"

それ以外は以下にする必要があります

#import <MBProgressHUD.h>

3.それは仕事に違いない! 私を信じて

于 2015-07-05T08:03:21.950 に答える
62

ヘッダーファイル、あなたは私の死になります...

最後に(引用符を含めて)追加することで機能するようになりました

"${PODS_ROOT}/BuildHeaders"

User Header Search Pathsエントリに移動し、「recursive」をチェックします。

于 2013-03-14T03:31:57.027 に答える
53

が見つから${PODS_HEADERS_SEARCH_PATHS}ず、開発中の git ブランチで定義されていない "$(SRCROOT)/Pods/Headers/"ため、ヘッダー検索パスに再帰を追加しました

それは私にとっては大丈夫です

于 2013-05-15T08:32:40.343 に答える
35

これが私のために働いたものです:

[ターゲット] > [ビルド設定] タブに移動し、[ユーザー ヘッダー検索パス] 設定を見つけます。

これを「$(BUILT_PRODUCTS_DIR)」に設定し、「再帰」チェック ボックスをオンにします。

これで、ビルド ターゲットは、ワークスペースの共有ビルド ディレクトリを検索して、リンク可能なヘッダー ファイルを見つけます。

====

アップデート

最近、同様の(わずかに異なりますが)問題がありました。.xcodeprojファイルではなくファイルを開いたため、Xcode は Pod を見つけることができませんでした.xcworkspace。将来的に他の人を助けるかもしれません。

于 2013-01-07T19:11:17.130 に答える
19

上記のいずれもuse_frameworks!うまくいかず、Podfile で切り替えたばかりでこのエラーが発生する場合は、以下をお読みください。

上記のすべてのソリューションと、それが私の特定のケースでは検索ヘッダー パスに関するものではないことを知る前に、さらに多くのソリューションを試しました。Podfileに切り替えるとuse_frameworks!、ブリッジ ヘッダーにフレームワークを含める必要がなくなり、実際、Xcode は非常に役に立たない「ヘッダーが見つかりません」というエラーをスローします。

必要なことは、ブリッジ ヘッダー ファイルからすべてのインポートを削除し、代わりに、import ModuleSwift フレームワークの場合と同様に、必要に応じて個々の Swift ファイルで Swift を使用することです。

また、Obj-C クラスでいずれかのフレームワーク ヘッダーを使用している場合 (私の場合は、FBSDK を使用する便利なクラスがあります)、ローカル インポートからグローバル インポートに変更する必要があります (これは に変更#import "Module.h"することを意味し#import <Module/Module.h>、オートコンプリートする必要があります)フレームワーク名を入力し始めると、あなたのために. 私の場合は<AFNetworking/AFHTTPRequestOperationManager.h>.

編集:それ以来、@import Moduleより安全な傘ファイルを使用することを学びました。

于 2016-05-18T03:33:33.573 に答える
10

wikiは、この問題を解決する方法についてアドバイスを提供します。

Xcode が依存関係のヘッダーを見つけられない場合:

Pod ヘッダー ファイルが Pod/Headers で正しくシンボリック リンクされていること、および HEADER_SEARCH_PATHS をオーバーライドしていないことを確認します (#1 を参照)。それでも Xcode がそれらを見つけられない場合は、最後の手段として、#import "Pods/SSZipArchive.h" のようにインポートを先頭に追加できます。

于 2012-08-20T12:39:50.447 に答える
4

ビルド設定で以下を更新しますが、エラーは発生しませんでした。これらを確認するには、ココアポッドを更新する際に.

ビルド設定

ビットコードを有効にする - はい (ビットコードを使用している場合)

マクロ プリプロセッサ - $(継承)

その他のリンカー フラグ - objc、-lc++、$(継承)

アーキテクチャのみを構築する

デバッグ - はい

リリース - いいえ

検索パス

フレームワーク検索パス - $(inherited) $(PROJECT_DIR)

ライブラリ検索パス - $(継承)

ヘッダー検索パス - $(継承)

于 2015-10-13T06:23:09.960 に答える
2

「 pod install」または「pod update 」の後にビルド エラーが発生した場合は、以前のバージョンを使用している間に Podの 1 つがXCode 6.3でビルドされている可能性があります。

私の場合、OSX を mavericks から Yosemite に更新して、Xcode 6.3 を使用し、問題を解決する必要がありました。

于 2015-04-09T18:41:57.823 に答える
1

私にとってうまくいったのは、ポッドプロジェクトを選択し、ポッドプロジェクトのターゲットディレクトリでヘッダーが欠落しているターゲットフレームワークを見つけて選択し、ターゲットのビルド設定の「アーキテクチャ」の下で「アクティブなアーキテクチャのみをビルド」を「いいえ」に設定することでした。

于 2016-06-04T19:48:18.617 に答える
1

git ハブから zip をダウンロードし、不足しているファイルを Pod/... の対応するパスにある Finder にドラッグする必要がありました。

于 2014-11-20T20:40:49.027 に答える
1

私にとって問題は、その他のリンカーフラグの値にありました。何らかの理由で、のようなフラグに引用符がありませんでした-l"xml2" -l"Pods-MBProgressHUD"

于 2014-10-17T16:07:28.603 に答える
0

私は Xcode 5.0 の GM シードを使用していましたが、これらの回答のいずれも機能しませんでした。ココアポッドを使用したヘッダーインポートに関する複数の異なる質問について、SOに関するすべての回答を試しました。

最後に、自分に合った解決策を見つけました。Mac AppStore (GM シードの上にインストール) 経由で Xcode 5.0 にアップグレードしたところ、ヘッダーのインポートが期待どおりに機能するようになりました。

また、私のシステムにはまだ Xcode 5 のベータ版があり、それも削除しました。多分それは2つのことの組み合わせでしたが、うまくいけば、これは他の誰かに役立ちます.

于 2013-09-30T20:03:49.977 に答える
-2

ターゲットのこの行にコメントを付けてみてください

#  use_frameworks!

または、別の回答を参照して、 xcode に単体テストのターゲットを追加しました - ブリッジング ヘッダーのインポートに失敗し、消えません

于 2016-07-19T12:58:03.040 に答える