回答:
Xcode 7 BetaでSwift 2を使用すると、フレームワークヘッダーが「パブリック」として宣言されていない場合にも発生します
たとえば、ヘッダーファイルに「プロジェクト」の可視性が設定されたCocoaタッチフレームワークがあり、プロジェクトのすべてのSwiftファイルで「傘のヘッダー...が見つかりません」というエラーが発生しました。エラーは消えました
これが発生する可能性のある方法は4つあり、以前のバージョンのXcodeのバグは無視されます
DEFINES_MODULE
に設定されていません YES
CLANG_ENABLE_MODULES
に設定されていません YES
これはAlways Search User Paths
、フレームワークターゲットの設定が有効になっているときに発生します。
に設定するNo
と、そのエラーが解決されます。
私見これはSwiftコンパイラのバグで、Appleにレーダーを提出しました。rdar:// 21038443を
参照してください
私にとって-アクセスレベルは公開されていましたが、見つからない傘でも失敗しました。「ビルドフェーズ」の「ヘッダー」セクションを一番上に移動しましたが、機能し始めました。ポッドファイルへのスクリプト:
post_install do |installer|
installer.pods_project.targets.each do |target|
phase_name = 'Headers'
target.build_phases.each do |phase|
if (phase.display_name.include? phase_name)
target.build_phases.unshift(phase).uniq! unless target.build_phases.first == phase
end
end
end
それがなぜ起こっているのか手がかりはありません。ダミープロジェクトを試してみました-発生していません。複数の依存関係がある大きなもののみ。アンブレラヘッダーをコピーする前にコンパイルしてください。
Podfile
ファイル:構文エラー、予期しない入力の終了、keyword_endが必要です。
私は「Use Header Maps」を「NO」に設定して問題を解決しました
New Swift Build SystemとParallelize Buildを有効にすると、この質問のようなエラーが発生することがわかりました。解決策は、迅速なソースファイルにインポートされたフレームワークにリンクすることでした。(以前はシリアルビルドキューで以前にビルドされたものにフレームワークがリンクされていたため、以前はアプリがビルドされると思いました)
ワークスペース内のすべてのターゲットのすべてのインポートを実行し、それらのフレームワークがそのターゲットにリンクされていることを確認するスクリプトを作成しました。
ここにはすでにいくつかの優れた答えがあります。@ Shadow_x99はとても役に立ちました。しかし、私自身の経験で補足することが許されれば。
アンブレラヘッダーは、ビルドプロセスで自動的に識別されます。ターゲットのビルド設定で指定されていないか、プロジェクト設定から継承されていません。
したがって、このエラーを回避するために-XCode 7の時点で -次のようになっています。
warning: no umbrella header found for target 'MyTarget', module map will not be generated
2つの重要なステップを実行する必要があります。
まず、アンブレラヘッダーの名前はtargetと同じにする必要があります。したがって、ターゲットがという名前のフレームワークMyTarget
である場合、という名前のヘッダーが必要MyTarget.h
です。
第2に、MyTarget
その回答で述べたように、ビルドフェーズでは、ヘッダーファイルを上記のようにパブリックセクションにリストする必要があります。
Xcode 7.1とCocoaPods 0.39を使用している場合、一部のCocoaPods(Nimble、Quickなど)に影響するコンパイラの迅速な変更があるようです。このスレッドで指定されている解決策のいくつかを試してください:https : //github.com/ CocoaPods / CocoaPods / issues / 4420ただし、どちらも機能しない場合は、Xcode 7.0.1または7.2ベータ版を使用してみてください。どちらもhttps://developer.apple.com/downloads/から入手できます。
編集:私の場合、問題を解決するために、CocoaPodsを0.38.2にダウングレードする必要もありました。
後の編集:Xcode 7.1とは関係がないようです。CocoaPodsを0.38.2にダウングレードするだけで役立つはずです。
sudo gem uninstall cocoapods -v 0.39
sudo gem install cocoapods -v 0.38.2
9つの回答のどれも役に立たなかったため、バグを報告するためにAppleに送信できる新しいプロジェクトを作成しようとしました。問題を再現できないことに驚いた。ビルド設定を確認したところ、同等でした。どうやらこれはある種のバグです。
他に何も解決しない場合は、新しいプロジェクトを作成し、現在のプロジェクトから少なくともいくつかのObjective C&Swiftクラスをインポートして、フレームワーク関連のビルド設定を新しいプロジェクトのデフォルト値と比較し、最終的にすべてのファイルを新しいプロジェクト。
私は一日のためにそれに取り組んできましたが、それの価値があるit.Iは、すべての方法を試してみましたここで、私はそれを解決しませんでした。新しいプロジェクト、実験を作成し、ユーザーヘッダーの検索パスが$ {SRCROOT}再帰的に設定されていることを発見し、それを$ {SRCROOT}非再帰的に変更し、ブリッジヘッダーパスを変更しました(例 #import "SVProgressHUD.h"
-> #import "Pods/SVProgressHUD/SVProgressHUD/SVProgressHUD.h"
)、エラーはなくなりました。