GitHubからプロジェクトをダウンロードした後、次のファイルをポッドします。これらのファイルの一部はOBJ-Cによって書き込まれ、ブリッジヘッダーを使用しました。
pod ‘SnapKit’
pod ‘MJRefresh’
pod ‘Alamofire’
pod ‘Kingfisher’
pod ‘MBProgressHUD’
pod ‘pop’
pod ‘EVReflection’
pod ‘StreamingKit’
pod ‘iCarousel’
pod ‘ReflectionView’
Xcode 9.0 beta 2でプロジェクトを実行すると、残念ながら次のようなエラーログが記録されます。
エラー:ブリッジングヘッダー '/ Users/ringo/Downloads/EvoRadio-master/EvoRadio/Resources/EvoRadiodio/Resources/EvoRadiodio/Resources/EvoRadio/dios/EvoRadiodio/Resources/EvoRadiodio/Resources/Bridging-Header.h '
Googleで検索しましたが、そのような問題はありません。エラーは、PCHファイルが必要ですか?これは私の.pch
ヘッダー設定です: 解決できません。
作り方
暗号化されたコアデータ にココアポッドを追加した後も、まったく同じ問題(Xcode9ベータ6)が発生しました。
これは私のPodFile
です:
# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'
pod 'EncryptedCoreData', :git => 'https://github.com/project-imas/encrypted-core-data.git'
target 'Root' do
# Comment the next line if you're not using Swift and don't want to use dynamic frameworks
use_frameworks!
# Pods for Root
target 'RootTests' do
inherit! :search_paths
# Pods for testing
end
target 'RootUITests' do
inherit! :search_paths
# Pods for testing
end
end
解決策:
1 $(inherited) non-recursive
をSearch Path -> Header Search Paths
に追加しました
2その後、${PODS_ROOT} recursive
をSearch Path -> User Header Search Paths
に追加しました
上記の両方のプロジェクトのターゲットビルド設定。
これらのSO回答をご覧ください:
ヘッダー検索パスを1つ継承
2つのユーザー検索パスを継承
これも発生する可能性があることに注意してくださいブリッジヘッダー自体がアプリのSwiftモジュールをインポートするObjective-Cコードをインポートする場合myproject-Swift.h
経由。解決策は、Swiftタイプに前方宣言を使用し、.m
ファイルにプロジェクトSwiftモジュールをインポートすることです。
@class MySwiftClass
または...
typedef NS_ENUM(NSInteger, MySwiftEnumType)
MySwiftEnumType
は、クラスでも最低レベルの名前です。 Swift enum MyClass.MySwiftEnumType
はMySwiftEnumType
になります
適切なプロジェクトワークスペースを開いていることを確認してください。開いていない場合、Podfile
にコンパイルに必要なすべてのリソースがない場合があります。
以前に正常に動作していたプロジェクトでも、同じエラーが発生しました。
ProjectName.xcodeproj
ファイルではなく、誤ってProjectName.xcworkspace
ファイルを開いたことを発見しました。 xcworkspace
ファイルを開くと、プロジェクトは再び機能しました。
私にとって、この問題は、既存のプロジェクトに新しいビルド構成とスキームを追加したときに発生しました。
解決策は、新しく作成されたスキームでpod install
を実行することでした。その後、プロジェクトが正常にビルドされました。
この解決策を試すことができます。この方法で同じ問題を解決しました。
製品>スキーム>スキームの編集>左メニューの「ビルド」を選択>暗黙的な依存関係を検索
[ビルド]タブで、[暗黙的な依存関係を見つける]をオンにします。
その後、クリーンを作成し、再度ビルドします。
私の場合、「Supporting Files」ではなく「Supporting FIles」というフォルダ名にタイプミスがありました。
私の場合、プロジェクトファイルの1つに「不明なタイプ」などの追加エラーを含む同じコンパイラエラーがあったため、これを問題のあるファイルに追加するだけで、すぐに解決しました。
#import <UIKit/UIKit.h>
これに関する私の経験では、Xcodeはプロジェクトにインポートされたポッド/フレームワークのヘッダーファイルを見つけることができません。
私のプロジェクトでの経験:Xcode9.2-9.3の更新では、暗黙の定義が現在利用できないか古いために、多くのココアポッドを更新する必要がありました。
Podfileを変更して、「use_frameworks!」を含めるようにしました。これに続いて、他のコンパイルの問題に対処した後、私はあなたが経験しているエラーを見つけました。 「use_frameworks! iOS 8より前のサポートのある一部のポッドが正しくコンパイルできなかった。この問題を修正するために行った手順:
pod deintegrate
を使用してPods /ディレクトリを削除しようとしましたその後pod install
を再度実行しましたが、問題は解決しませんでした。
最終的には、Podfileのuse_frameworks行を削除し、手順1〜3を繰り返しました。プロジェクトは見つからないヘッダーファイルを見つけることができ、問題は二度と現れませんでした。
Podfile.lock
を削除してpod install
を再実行すると、これが修正されました。
次のような非常に多くの理由があります。
私のために働く唯一のものは、 Xcode 9-プリコンパイル済みヘッダーの発行に失敗しました で受け入れられた答えです。
platform :ios, '11.0'
ポッドファイルはプロジェクトのターゲットと一致する必要があります
同じシナリオがありました。ファイルAにYourProjectName-Bridging-Header.hに含めたことを確認してください
また、新しいXcodeを更新した後、これに悩まされました。数時間の調査の後、複数のターゲットがある場合、Xcode 10のポッドファイルにさらにターゲットを追加する必要があることがわかりました。したがって、コードは次のようになります。
platform :ios, '9.0'
target 'EvoRadio' do
pod ‘SnapKit’
pod ‘MJRefresh’
pod ‘Alamofire’
pod ‘Kingfisher’
pod ‘MBProgressHUD’
pod ‘pop’
pod ‘EVReflection’
pod ‘StreamingKit’
pod ‘iCarousel’
pod ‘ReflectionView’
target 'EvoRadio2ndtarget' # add your second target
end
Xcode 9では追加する必要はありませんが、Xcode 10では追加する必要があることがわかりました。お役に立てれば。
私の場合、間違ったスキーム(左上メニュー)でビルドしていました。