Xcode 10でコンパイルするときに新しいビルドシステムに移行しようとしていますが、次のエラーが発生します。
Cycle details:
→ Target 'project' : LinkStoryboards
Target 'project' has compile command with input '/Users/project/Commons/Components/ScreenshotSharing/ViewController/AppShare.storyboard'
Target 'project' : ValidateEmbeddedBinary /Users/project/Xcode/DerivedData/project-hgqvaddkhmzxfkaycbicisabeakv/Build/Products/Debug-iphoneos/project.app/PlugIns/stickers.appex
Target 'project' has process command with input '/Users/project/Resources/Info.plist'
Target 'project' has compile command with input '/Users/project/Commons/Components/ScreenshotSharing/ViewController/AppShare.storyboard'
問題のファイルを削除した後でも、別のxib/storyboardでも同じ結果になります。レガシービルドシステムに戻らずにこのエラーを解決するにはどうすればよいですか?
メインターゲットのEmbed App Extensions
内のBuild Phases
スクリプトを最後の位置に移動することで、ようやくこれを解決することができました。
Xcode 10ビルドシステムに問題がある場合は、次の手順に従って修正してください。
- Xcodeで、「ファイル」->「プロジェクト/ワークスペースの設定」に移動します。
- ビルドシステムをレガシービルドシステムに変更します。
新しいXcodeのビルドの問題を解決します。
新しいビルドシステムを使用したい場合は、トラブルシューティングヘルプ このApple Xcodeヘルプページ を参照してください。
Cocoapodsでこの問題が発生していました。解決策は、ビルドフォルダーをクリーンアップしてすべてのポッドを再インストールし、アプリを再構築することでした。この方法で問題は解決しました。
「ファイルのコピー」および「ライブラリとバイナリをリンク」ビルドフェーズの前に、「バンドルリソースのコピー」ビルドフェーズを移動することで問題を修正しました。
Xcode 10の新しいビルドシステムは、ビルドの依存関係サイクルを検出し、それらの解決に役立つ診断を提供します。これらの依存サイクルを修正すると、ビルドの信頼性が向上し、正しい製品が一貫して生成されます(サイクルは、派生データを削除する必要がある可能性があります)。また、ビルドのサイクルにより、ビルドグラフ内の何かが各ビルドで常に最新ではなくなり、ビルドするたびにビルドのやり直しが不必要に動作するため、インクリメンタルビルド時間も改善されます。
Xcodeヘルプには、いくつかの一般的なタイプの依存サイクルの解決に関するドキュメントがあります。 https://help.Apple.com/xcode/mac/current/#/dev621201fb
とはいえ、このサイクル診断は少し奇妙に見えます。ビルドフェーズを再配置することで解決できたように思えますが、診断が問題を本当に説明したとは思いません。気にしない場合は、この特定のケースでこの診断を改善することに関するバグレポートをいただければ幸いです。 https://bugreport.Apple.com でファイルを提出できます。関連性があると思われるプロジェクトに関するすべての詳細を含めてください。問題を再現するサンプルプロジェクトは理想的ですが、それを添付できない場合は、プロジェクト構造の診断といくつかのアイデアがまだ役立ちます。
Cocoapodsでこの問題が発生していましたが、一時的な回避策が見つかりました。
Sudo gem update cocoapods
rm -rf ~/Library/Developer/Xcode/DerivedData/*
pod install
ソース こちら とXcode 10ベータ4を使用しています。
EDIT:現在Xcode 10.0で引き続き関連しています。
ターゲットのScheme
で、ラベルBuild
を見つけ、Find Implicit Dependencies
がチェックされていないことを確認します。これらの手順が機能する場合があります。
Swift、Objective-C、CoreData:の混合相互作用で同様の問題がありました:私のプロジェクト(Swiftで記述)では、Core Dataの自動生成Swiftクラスも使用しました。
しかし、ある時点で、コアデータエンティティを参照するパブリックプロパティ(対応するヘッダーで定義)を備えたObjective Cクラスが必要でした。
#import "ProjectName-Swift.h" // this is to import the Swift entities into ObjC
@interface myObjCClass : NSObject
@property (nonatomic) MyCoreDataClass*myEntity;
@end
CoreDataモデルを変更するとすぐに、XCodeはクラスを再構築しようとし、示されたサイクルビルドエラーでハングしました。
プロジェクトの順序を変更するコンパイルヘッダーフェーズがなかったため、最初の絶望の後、ソリューションは非常に簡単であることがわかりました。
myObjCClass.h
で、共有Swiftヘッダーインポートステートメントを削除し、@class
ディレクティブで変更しました。
@class MyCoreDataClass; // tell the compiler I will import the class definition somewhere else
// the rest stays the same
@interface myObjCClass : NSObject
@property (nonatomic) MyCoreDataClass*myEntity;
@end
#import "ProjectName-Swift.h"
ステートメントをmyObjCClass.m
クラス定義ファイルに移動しました。
#import "myObjCClass.h"
#import "ProjectName-Swift.h"
@implementation myObjCClass
@end
そして、それは心配をしませんでした。
私は同じ問題に直面していました:以下はエラーでした
ターゲット「Pods-MyAppName」と「RxCocoa」間の依存関係のサイクル。建物は信頼できない結果をもたらす可能性があります。これは通常、ソースのコンパイルの前にターゲットのヘッダービルドフェーズを移動することで解決できます。サイクルパス:Pods-MyAppName→RxCocoa→Pods-MyAppName
以下の手順を使用して解決しました。
1)。 Pods-MyAppNameプロジェクトのターゲットRxCocoaに移動します
2)ビルドフェーズに進む
3)ヘッダーフェーズをドラッグし、Complile Sourcesビルドフェーズの上に移動します。
これで問題が解決しました。それが役に立てば幸い!
Xcode 10.2.1 /ユニットテストターゲット。ユニットテストのターゲットは、ビルド時間を改善するためにホストターゲットから独立しています。すべての依存関係をFind Implicit Dependencies
-Build Settings
で指定しているため、Scheme
-Build
オプションのCompile Sources
のチェックを外して解決します。
Version 10.0 beta 3 (10L201y)
についても同じ問題があり、New Build Systemが必要でした。
問題が無効になったEnable Modules (C and Objective-C)
Build Settings -> Apple Clang - Language - Modules
有効にした後(YESに設定)、エラーを取り除きました。
私の問題は、SwiftブリッジングヘッダーとObjective Cファイル間の周期的な依存関係に関係していました。
Objective Cヘッダーファイルには#import "...-Swift.h"
ファイルがあり、いくつかのSwiftファイルにはこれらのファイルをインポートに含めていたため、循環依存関係が発生していました。
これが、私が解決策を見つけるきっかけとなったStackOverflowです。
SwiftブリッジングヘッダーがHopscotch-Swift.h自体をインポートするファイルをインポートする場合の循環参照を防ぐ方法
編集:
上記のファイルをSwiftに変換することで問題を解決しました。
私は同じ問題とエラーを抱えていましたが、エンティティの「NSManagedObjectサブクラスを作成」したときにこのエラーが発生しました。あなたがあなたのエラーがCore Dataについての私のものと同じであると思うなら、おそらくあなたを助けることができる(そして私を助けた)ことは:
他のシナリオではXcodeが自動的にファイルを作成し、別のファイルを作成すると競合が発生するためだと思います。
私の解決策は、単にビルドフォルダーをクリーンアップしてから再ビルドすることでした。
Xcode 10でプロジェクトをアーカイブしようとすると、同様の問題が発生しました。詳細は次のとおりです。
→ Target 'mytarget': CodeSign /path/to/mytarget.app
○ Target 'mytarget': SetGroup staff /path/to/mytarget.app
○ Target 'mytarget': SetMode u+w,go-w,a+rX /path/to/mytarget.app
○ Target 'mytarget': SetGroup staff /path/to/mytarget.app
mytarget -> Build Settings -> Deployment -> Install Owner
に$(USER)
を設定して修正しました
Podsターゲット内のビルドフェーズの順序を変更する必要があるようです。私にとっては、ヘッダーを残りの上に移動することはうまくいきました。 Podfileでこれを自動化できます。
require 'xcodeproj'
post_install do |installer|
installer.pods_project.targets.each do |target|
headers_phase = target.build_phases.find { |p| p.kind_of?(Xcodeproj::Project::Object::PBXHeadersBuildPhase) }
if headers_phase
puts "#{target.name}: Moving Headers build phase to top"
target.build_phases.insert(0, target.build_phases.delete_at(target.build_phases.index(headers_phase)))
end
end
end
実際、XcodeのプロンプトThis usually can be resolved by moving the target's Headers build phase before Compile Sources
に注意を払うだけで、それを実行できます。
この問題が発生すると、Xcodeから次のプロンプトが表示されます。
:-1: Cycle inside XXXX; building could produce unreliable results. This usually can be resolved by moving the target's Headers build phase before Compile Sources.
Cycle details:
→ Target 'XXXX': LinkStoryboards
○ Target 'XXXX: Ditto Path/XXXX-Swift.h /Path/XXXX-Swift.h
○ Target 'XXXX has compile command for Swift source files
○ That command depends on command in Target 'XXXX: script phase “Run Script”
私はただ一つのことをして、問題を完全に解決しました:
Target
を選択し、Build Phase
を選択してRun Script
をCompile Sources
の前に移動します。
実行、正常にコンパイルされました。
原則は単純で、コンパイル順序を変更するだけです。
Xcode 10.2&Swift 5
このページから試してみましたが、私が助けた唯一のことは、ターゲットのコピーを作成し、コピーの名前を更新し(コピーサフィックスを削除)、古いものを削除し、その後ポッドをインストールしたことです。