web-dev-qa-db-ja.com

iOS - CocoaPodでヘッダファイルが見つからないためビルドに失敗する

CocoaPodsを使ったiOSプロジェクトがあります。他の開発者が同じプロジェクトに取り組むまで、すべてが順調に進んでいました。彼はいくつかの変更を加え(私の知る限りコードを書くためだけに)、リポジトリに新しいブランチを作りました。彼のブランチをチェックアウトしてビルドしようとしましたが、エラーが発生しています。ASLogger/ ASLogger.hファイルが見つかりません。

プロジェクト全体を削除して新しいコピーを作成して「pods install」を使用したとしても。ビルド失敗はまだあります。問題が発生する可能性がある場所はありますか。さらに情報が必要な場合は、聞いてください。

183
Filip Majernik

更新

設定ファイルがないターゲットでは、Podfilelink_withが含まれていることを確認してください。 Cocoapodsのみ デフォルトで最初のターゲットを設定 それ以外の場合。例えば.

platform :osx, '10.7'
pod 'JSONKit',       '~> 1.4'

link_with 'Pomo', 'Pomo Dev', 'Pomo Tests'

------更新を終了します


注:以下のステップについては、プロジェクト - >情報 - >構成を調べてください。


同様の症状があり、pods.xcconfigファイルがビルドしようとしていた特定のtargetに含まれていないことがわかりました。他の提案された解決策のいくつかは私のために働いたが、これは根本的な問題の一部に対処するように思われた。

Pods.xcconfig not working

簡単な解決策は、1つのセットがないターゲットの設定ファイルを変更することでした。

Pods.xcconfig working

205
waggles

更新

私は最初の答えからこれを更新しました。もしそうなら、私の投票を取り戻すことを願っています。

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

これはどんな衝突でも助けて、あなたのソースを正しくインポートさせるでしょう。

88
Bill Burgess

1.確認する

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

  • "$ {PODS_ROOT} /"再帰的

enter image description here

enter image description here

enter image description hereenter image description here

2.自分のpodfileが設定されている場合は、インポートスタイル(KEY POINT)を確認します。

use_frameworks!

File-Bridging-Header.hでは、フォーマッタは次のようになります。

#import "MBProgressHUD.h"

そうでなければ下にあるはずです

#import <MBProgressHUD.h>

それは仕事でなければなりません!私を信じて

75
Albert.Qing

ヘッダファイル、あなたは私の死になるでしょう...

最後に(引用符を含む)を追加することで動作するようになりました

"${PODS_ROOT}/BuildHeaders"

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

57
averydev

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

それは私には問題ありません

52
mactive

他の答えは両方ともここでは役に立ちませんでした。私はそれを修正するかもしれない2つの他の問題を見つけました:

EDITこの方法でシンボリックリンクをチェックすることができます。拡張子を付けずに 'check'という名前のテキストファイルを作成します。これらの行をコピーしてください。

file=/Users/youUserName/XcodeProjectName/Pods/BuildHeaders/SVProgressHUD/SVProgressHUD.h
if [[ ! -e $file &&  -L $file ]]; then
  echo "$file symlink is  broken!"
else
  echo "symlink works"
fi

それから端末に行き、チェックファイルが置かれているフォルダに移動して、

bash check
35
brainray

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

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

これを "$(BUILT_PRODUCTS_DIR)"に設定し、 "再帰的"チェックボックスをチェックしてください。

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

====

更新

私は最近似たような(少し異なるが)問題を抱えていた。 .xcodeprojファイルではなく.xcworkspaceファイルを開いたため、XcodeはPodを見つけることができませんでした。将来他の人を助けるかもしれません。

35
Snowcrash

上記のどれでもうまくいかず、Podfileでuse_frameworks!に切り替えただけでこのエラーが発生した場合は、次のように読み替えてください。

私は上のすべての解決策を試しましたが、私の特定のケースでは検索ヘッダーパスに関するものではないことを学ぶ前に、もっと多くのことを試しました。 Podfileでuse_frameworks!に切り替えたときに、ブリッジングヘッダにフレームワークを含める必要がなくなり、実際にXcodeは非常に役に立たない「ヘッダを見つけることができません」エラーをスローします。

あなたがする必要があるのはあなたのブリッジングヘッダファイルからすべてのインポートを削除して、代わりにあなたの個々のSwiftファイルでSwift import Moduleを使うことです。

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

編集:私はそれ以来@import Moduleを行うことはさらに安全であるアンブレラファイルを使用することを学びました。

19
Scott Fister

あなたはCocoapodsスタイルをインポートしてみましたか?

#import <ASLogger.h>

サイト上の情報はあまり明確ではない、私はプルリクエストを送信しました:

https://github.com/CocoaPods/cocoapods.org/pull/34

更新:彼らは私の要求を引っ張りました:)

16
Tieme

wiki はこの問題を解決する方法についてアドバイスを与えます:

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

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

10
tilo

私はチーム内で同じ問題を抱えている唯一の開発者でした。それはすべての人にとって完璧に機能したので、自分の環境でなければならないことに気付きました。私は別のディレクトリで同じプロジェクトのgit cloneを試して、それが完全にコンパイルされた、そしてそれから私はそれが私のプロジェクトパスのどこかへのXcodeキャッシングものでなければならなかったことに気づいた。あなたのプロジェクト、それは私のために働いた。

次のようにしてパスを取得したり、Finderでフォルダを開くこともできます。

Xcode - > Preferences - > Locations - > ** DerivedData

9
bithavoc

私は自分のビルド設定で以下のことを更新します、そして私はエラーを得ませんでした。あなたのカカオポッドを更新している間これらをチェックすることは事柄です。

ビルド設定

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

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

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

ビルドアーキテクチャーのみ

デバッグ - はい

関連 - いいえ

検索パス

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

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

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

2
Surezz

"pod install"または "pod update"の後にビルドエラーが発生した場合は、ポッドの1つがXCode)でビルドされている可能性があります。 6.あなたがまだ以前のバージョンを使っている間。

私の場合は、Xcode 6.3を使用して問題を解決するために、OSXをマーベリックからYosemiteに更新する必要がありました。

2
Omaty

私は同じ問題を抱えていますが、上記の解決策は機能しません。私はこれを行うことでそれを修正しました:

  1. プロジェクト全体を削除する
  2. プロジェクトのgit cloneを実行してbundle exec pod installを実行します。
  3. peojectをcdし、remote add upstream your-remote-rep-addを実行します。
  4. gitフェッチアップストリーム
  5. gitチェックアウトマスター
  6. アップストリーム/マスターのgit merge

そしてそれはうまくいきます。

1
Azure Yu

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

1
beryllium

GitハブからZipをダウンロードし、見つからないファイルをPodの対応するパスでFinderにドラッグします。

1
neelamc23

もう1つの理由は、次のとおりです。すべてのヘッダーパスは問題ないようでしたが、まだコンパイル済み(.pch)ファイルにエラーがあり、Podヘッダーを読み取ろうとしていました。

(#import <CocoaLumberjack/CocoaLumberjack.h>)。

生のビルド出力を見てみると、エラーが原因で、ビルドしているメインターゲットではなく、Watch OS Extension Targetが壊れていることに気付きました。そこ。付随するWatch OSのターゲット設定が.pchファイルをインポートしようとしないことを確認してください(特に、私が行ったようにマスターターゲット設定からインポートを設定した場合)。

0
Owen Hartnett

私はXcode 5.0のGMシードを使っていましたが、これらの答えのどれもうまくいくことができませんでした。私はすべての答えをSOで試してみました。ヘッダーのインポート(w/cocoapods)について複数の異なる質問をしました。

最終的に私にはうまくいく解決策を見つけました:私はMac AppStore(GM seedの上にインストールされています)でXcode 5.0にアップグレードしました。 。

私はまだ私のシステムにXcode 5のベータ版を持っていました、そして私も同様にそれを削除しました。たぶんそれは2つのことの組み合わせでした、しかしうまくいけばこれは他の誰かに役立ちます。

0
DiscDev

私にとってうまくいったのは、Podsプロジェクトの選択、Podプロジェクトのターゲットディレクトリのヘッダが欠けているターゲットフレームワークの検索と選択、そしてターゲットのビルド設定の「Architectures」の下の「Build Active Architecture Only」を「No」に設定することでした。

0
Aaron

私は、ポッドインストールとしてライブラリを含めることが動的ライブラリを直接助けることを発見しました。たとえば、Firebaseの場合:

pod 'RNFirebase', :path => 'path/to/node_modules/react-native-firebase/ios'

またはASLoggerの場合:

pod 'ASLogger', :path => 'path/to/node_modules/aslogger/ios' // path to header files

HEADER_SEARCH_PATHSを変更したりハードコーディングしても役に立ちませんでした。それでもエラーが発生する場合は、rm -rf node_modulesやpodファイルを削除する必要はありません。キャッシュをクリアすると便利です。

反応ネイティブのために、私は実行します

    rm -rf $TMPDIR/react-native-packager-cache-*
    rm -rf $TMPDIR/metro-bundler-cache-*
    rm -rf $TMPDIR/metro-* 
    rm -rf $TMPDIR/react-* 
    rm -rf $TMPDIR/haste-*
    rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"
    npm start -- --reset-cache

Xcodeのために私は~/Library/Developer/Xcode/DerivedDataの中のフォルダーを削除します

0
ehacinom

答えのどれも私を助けませんでした(私のポッドをすべてのターゲットとリンクさせた、構成設定を正しく構築し、検索パスを正しく設定した "$(inherited)"など)。

標準のinstall/updateコマンドを使用してcocoapodsを最新のデバッグバージョンに更新した後、問題は自動的に解消されました。

   gem install cocoapods --pre

または

   Sudo gem install cocoapods --pre

(Sudoがインストール中に使用された場合).

それはカカオポッドのバグだったに違いありません。

0
Lukasz

私にとっては、私のPodsプロジェクトのためのiOSのデプロイメント目標を修正したのは私のプロジェクトよりも低いものでした。私のプロジェクトと同じものにすると、ヘッダーファイルを見つけることができました。

0
Josh

これは私のための答えでした、私はカカオポッドを更新しました、そしてそれがPODS_HEADERS_SEARCH_PATHSをなくしたと思います。私の解決策はこれに似ていたが、私は "$(PODS_ROOT)/ヘッダ"を使用した - Andrew Aitken

この回答をどうもありがとうございました。問題を解決する方法を探すのに苦労しました。どうもありがとうございました。

0
user1494912