内部を循環します; ビルドすると信頼性の低い結果が生成される可能性があります:Xcode10エラー


80

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でも同じようになります。従来のビルドシステムに戻さずにこのエラーを解決するにはどうすればよいですか?


同様のエラーが発生し、「派生データ」を削除してプロジェクトをクリーニングすることで修正しました。これは私にとって魅力のように機能しました!
JayprakashDubey19年

回答:


62

Xcode 10ビルドシステムに問題がある場合は、次の手順に従って修正してください。

  1. Xcodeで、[ファイル]-> [プロジェクト/ワークスペース設定]に移動します。
  2. ビルドシステムをレガシービルドシステムに変更します。

新しいXcodeでのビルドの問題が解決されます。

新しいビルドシステムを使用する場合は、このアップルのXcodeヘルプページからトラブルシューティングのヘルプ見つけることができます


50
問題の要点は、最新のビルドシステムに移行することです。
Sahil Kapoor

4
次に、ビルドシステムを変更することで解決策が必要ないことを問題に言及する必要があります。また、新しいビルドシステムを使用する場合は、Xcodeサポートセンターに記載されている手順に従うことができます。また、反対票を投じるときは、正当な理由を記入してください。ありがとう!@SahilKapoor
AkshaySunderwani18年

1
見知らぬ人に感謝します。私の唯一の関心は、ビルドを再び機能させて期限を迎えることです。そのため、あなたの答えはまさに私が必要としていたものです。
ダンラフニー

6
これは問題の適切な解決策ではありません。これほど単純なもののために、ビルドシステムをレガシーに変更しないでください。
VarunGoyal19年

38

私はCocoapodsでこの問題を抱えていました。解決策は、ビルドフォルダーをクリーンアップして、すべてのポッドを再インストールしてから、アプリを再構築することでした。問題はそのように解決しました。


2
これは私にもうまくいきました。クリーンインストールとポッドインストールを行いました。
Cloud9999Strife 2018

私の場合、ポッドのインストールを行ったばかりなので、ビルドフォルダーをクリーンアップするだけで済みました。このエラーは、Xcodeにビルド設定の更新を許可した後にのみ発生しました。
ストーンチッ​​プ2018年

Alamofireに問題がありました。任意のココアポッドと働いていた罰金再インストールしなくても、「クリーンビルドフォルダを」DID
kite_n_codeを

25

すべての「ファイルのコピー」と「バイナリとライブラリのリンク」ビルドフェーズの前に「バンドルリソースのコピー」ビルドフェーズを移動することで、問題を修正しました。


+1ですが、少しバリエーションを使用しました。Xcodeの新しいデフォルトプロジェクトはそのようなものではないため、「バイナリとライブラリをリンクする」の前に何も移動する必要はありませんでした。「CopyBundleResources」を「CopyHelperTools」(いくつかのコマンドラインツールとヘルパーアプリをmacOSアプリ製品のコンテンツ/ヘルパーにコピーする)の前に移動しました。ただし、これら2つの順序は違いを生むはずなので、ファイルをコピーするだけなので、意味がありません。だから私はバグを提出しました:42927301。私の修正された解決策:それが機能するまでさまざまなコピーXXXビルドフェーズを交換します:(
Jerry Krinock 2018

2
私も同じですが、バンドルリソースのコピーをファイルのコピーフェーズの上に移動し、現在は機能するようにしています。私はあなたのバグを複製します@ JerryKrinock–
Peter N Lewis

私にとって、問題はEmbed Frameworksの依存関係にあったので、EmbedFrameworksをCopyBundleResourcesの上に移動しました。
エレナ

19

Xcode 10の新しいビルドシステムは、ビルドの依存関係サイクルを検出し、それらを解決するのに役立つ診断を提供します。これらの依存関係サイクルを修正すると、ビルドの信頼性が向上し、正しい製品が一貫して生成されるようになります(サイクルは、派生データを削除する必要がある原因となる可能性があります)。また、ビルドのサイクルによってビルドグラフ内の何かがビルドごとに常に古くなり、ビルドするたびにビルドのやり直しが不必要に機能するため、増分ビルド時間が改善されます。

Xcodeヘルプには、いくつかの一般的なタイプの依存関係サイクルの解決に関するドキュメントがあります:https//help.apple.com/xcode/mac/current/#/dev621201fb0

とはいえ、このサイクル診断は少し奇妙に見えます。ビルドフェーズを再調整することで解決できたようですが、診断で問題が実際に説明されたとは思いません。よろしければ、この特定のケースのこの診断の改善に関するバグレポートをいただければ幸いです。https://bugreport.apple.comでファイルできます。関連すると思われるプロジェクトに関するすべての詳細を含めてください。問題を再現するサンプルプロジェクトが理想的ですが、それを添付できない場合でも、診断とプロジェクト構造のアイデアが役立ちます。


18

私はCocoapodsでこの問題を抱えていて、一時的な回避策を見つけました:

  1. 最新バージョンのcocoapods(1.5.3)をインストールします。 sudo gem update cocoapods
  2. 派生データを削除します。 rm -rf ~/Library/Developer/Xcode/DerivedData/*
  3. pod install

ここでソースを取得し、Xcode10ベータ4を使用しています。

編集:現在Xcode 10.0であり、まだ関連しています。


先週、Xcode 10.1(10B61)で再び発生しましたが、それでも機能しました。Clean Build Folder手順2.とを実行する前に、必ず(Xcodeを終了することも役立つ場合があります)を実行してください3.
gabuchan 2018

チャームのように働いた!
旗手

15

Swift、Objective-C、CoreDataの混合相互作用で同様の問題が発生しました。私のプロジェクト(Swiftで記述)では、れたSwiftクラスも利用しました。

しかし、ある時点で、コアデータエンティティを参照するパブリックプロパティ(対応するヘッダーで定義されている)を持つObjectiveCクラスが必要でした。

#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

そして、それは心配を構築しませんでした。


うわー、どうもありがとう。これで一晩中苦労していましたが、この提案を徹底的に実行すると、問題は修正されました!
Erik van derNeut19年

14

メインターゲットのEmbed App ExtensionsスクリプトBuild Phasesを最後の位置に移動することで、最終的にこれを解決することができました。


Xcode 10.0ベータ4(10L213o)でこのエラーが発生しました–この回避策で解決しました:-)
StackUnderflow 2018

11

実際、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”

私は1つのことだけを行い、問題を完全に解決しました。

を選択TargetBuild PhaseRun Scriptから、をの前に移動しますCompile Sources

実行、正常にコンパイルされました。

原理は単純で、コンパイル順序を変更するだけです。

画像1

Xcode 10.2&Swift 5


2
これは機能しますが、1回だけで、次のビルドコマンドで問題が再発します。
スワティ

6

私は同じ問題に直面していました:以下はエラーでした

ターゲット「Pods-MyAppName」と「RxCocoa」の間の依存関係を循環させます。構築すると、信頼性の低い結果が生じる可能性があります。これは通常、ソースのコンパイルの前にターゲットのヘッダービルドフェーズを移動することで解決できます。サイクルパス:ポッド-MyAppName→RxCocoa→ポッド-MyAppName

私は以下の手順を使用してそれを解決しました:

1)。PodsのターゲットRxCocoaに移動-MyAppNameプロジェクト

2)ビルドフェーズに進みます

3)ヘッダーフェーズをドラッグして、ソースのコンパイルフェーズの上に移動します。

これで私の問題は修正されました。それが役に立てば幸い!


6

ターゲットSchemeので、ラベルを見つけ、BuildそれFind Implicit Dependenciesがチェックされていないことを確認します。これらの手順は機能する場合があります。


「閉じる」とは、色とチェックマークが必要という意味ですか?または、チェックマークなしで空にする必要がありますか?
ベンレギエロ

1
こんにちは、@ BenLeggiero。「閉じる」は、チェックマークなしで空にする必要があることを意味します。
nhXu19年

3

私の解決策は、ビルドフォルダをクリーンアップしてから再ビルドすることでした。


誰もこのソリューションを評価しなかったのは驚くべきことです。単純ですが、問題を深く掘り下げる前に最初に試す必要があります。
フーン

3

私の問題は、迅速なブリッジヘッダーとObjectiveCファイルの間の周期的な依存関係に関係していました。

私のObjectiveCヘッダーファイルには、 #import "...-swift.h"ファイルがあり、次にいくつかの迅速なファイルにそれらのファイルを上記のインポートにインクルードしていたため、周期的な依存関係が発生していました。

これは私が解決策を見つけるように導いたStackOverflowです:

Objective C、循環依存によるSwiftの相互運用性の問題

SwiftブリッジヘッダーがHopscotch-Swift.h自体をインポートするファイルをインポートするときに循環参照を防ぐ方法

編集:

上記のファイルをswiftに変換することになり、これで問題が解決しました。


2

ポッドターゲット内のビルドフェーズの順序を変更する必要があるようです。私にとっては、ヘッダーを他のヘッダーの上に移動することでうまくいきました。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

1

同じ問題がVersion 10.0 beta 3 (10L201y)あり、新しいビルドシステムが必要でした。

問題が無効になっている Enable Modules (C and Objective-C)

Build Settings -> Apple Clang - Language - Modules

それを有効にした後(YESに設定)、エラーを取り除きました。


1

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

で設定$(USER)して修正しましたmytarget -> Build Settings -> Deployment -> Install Owner


1

Core_Data

同じ問題とエラーが発生しましたが、エンティティの「NSManagedObjectサブクラスを作成」したときに発生し、このエラーに直面しました。したがって、エラーがCore Dataに関する私のものと同じであると思われる場合、おそらくあなたを助けることができる(そして私を助けた)ことは次のとおりです。

  • 「xcdatamodel」ファイルでエンティティをクリックします
  • 右のバーに移動し、データモデルインスペクターをクリックします
  • 「モジュール」を「現在の製品モジュール」に変更します
  • 最後に、「Codegen」を「Manual / None」に変更します
  • きれいにして構築する

他のシナリオでは、Xcodeがファイルを自動的に作成し、別のファイルを作成すると競合が発生するためだと思います。


1

Xcode 10.2.1 /ユニットテストターゲット。私の単体テストターゲットは、ビルド時間を改善するためにホストターゲットから独立しています。チェックを外してそれを解決するためFind Implicit DependenciesにあるScheme- Build私はすべての依存関係を指定すると、オプションBuild Settings- Compile Sources


0

ここでこれを修正できる可能性があります:

ファイル->ワークスペース設定->ビルドシステム:新しいビルドシステム

ワークスペース設定


0

このページから試してみましたが、ターゲットのコピーを作成してコピーの名前を更新し(コピーのサフィックスを削除)、古いものを削除して、後でポッドをインストールしただけでした。


0

Xcodeをバージョン11.4に更新した後、この問題に直面しました。11.2.1にダウングレードすると修正されました。


0

Xcode:11.3.1ターゲット:XCUITestターゲット

  1. コマンドを実行してビルドフォルダーをクリーンアップします:rm -rf〜 / Library / Developer / Xcode / DerivedData / *

  2. ワークスペース設定の変更:レガシービルドシステムを選択します

ここに画像の説明を入力してください


-1

次の2つのオプションが私のために働いた:ファイル->プロジェクト/ワークスペース設定。

1、[ファイル]-> [プロジェクト設定]でビルドシステムを「レガシービルドシステム」に変更します

2、スキームを編集し、[ビルド]セクションで[ビルドの並列化]オプションを選択します。


それは関係ありません。最新のビルドシステムでは、これは発生しません。
ラプター

-1

LHSのプロジェクトペインで、ビルド製品について、RHSペインのターゲットメンバーシップのリストでそれらを選択しないでください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.