내부 순환; 빌드하면 신뢰할 수없는 결과가 발생할 수 있습니다. Xcode 10 오류


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에 대해 동일하게 표시됩니다. 레거시 빌드 시스템으로 되 돌리지 않고이 오류를 어떻게 해결할 수 있습니까?


비슷한 오류가 발생하여 '파생 데이터'를 삭제하고 프로젝트를 정리하여 수정했습니다. 이것은 나에게 매력처럼 작동했습니다!
Jayprakash Dubey

답변:


62

Xcode 10 빌드 시스템에 문제가있는 사람은 다음 단계에 따라 문제를 해결하십시오.

  1. Xcode에서 File-> Project / Workspace settings로 이동합니다.
  2. 빌드 시스템을 레거시 빌드 시스템으로 변경합니다.

새로운 Xcode로 빌드 문제가 해결됩니다.

새로운 빌드 시스템으로 작업하려면 이 Apple Xcode 도움말 페이지에서 문제 해결 도움말 찾을 수 있습니다 .


50
문제의 요점은 최신 빌드 시스템으로 이동하는 것입니다.
Sahil Kapoor

4
그런 다음 빌드 시스템을 변경하는 솔루션을 원하지 않는다는 문제를 언급해야합니다. 또한 새로운 빌드 시스템으로 작업하려면 Xcode 지원 센터에 제공된 단계를 따를 수 있다고 언급했습니다. 또한 비추천 할 때 유효한 이유를 제공하세요. 감사! @SahilKapoor
하기 Akshay Sunderwani

1
친절한 낯선 사람 감사합니다. 내 유일한 관심은 마감일을 맞추기 위해 빌드가 다시 작동하도록 만드는 것이므로 귀하의 대답은 정확히 필요한 것입니다.
Dan Loughney 2010 년

6
이것은 문제에 대한 적절한 해결책이 아닙니다. 빌드 시스템을 이처럼 단순한 것을 위해 Legacy로 변경해서는 안됩니다.
Varun Goyal

38

Cocoapods 에서이 문제가 발생했습니다. 해결책은 빌드 폴더를 정리하고 모든 포드를 다시 설치 한 다음 앱을 다시 빌드하는 것입니다. 문제는 저절로 해결되었습니다.


2
이것은 나에게도 효과적이었습니다. 나는 깨끗하고 포드 설치를했다.
Cloud9999Strife 2018-08-03

제 경우에는 방금 포드 설치를 수행했기 때문에 빌드 폴더 만 정리하면되었습니다. 이 오류는 Xcode가 빌드 설정을 업데이트하도록 허용 한 후에 만 ​​발생했습니다.
Stonetip

Alamofire에 문제가있었습니다. 어떤 코코아 포드와 일을 잘 재설치없이 '클린 빌드 폴더를'나요
kite_n_code을

25

모든 '파일 복사'및 '라이브러리와 바이너리 연결'빌드 단계 이전에 '번들 리소스 복사'빌드 단계를 이동하여 문제를 해결했습니다.


+1하지만 약간의 변형을 사용했습니다. 나는 "Link Binary with Libraries"를 앞두고 아무것도 옮길 필요가 없었습니다. Xcode의 새로운 기본 프로젝트가 이와 같지 않기 때문에 그렇게하지 않을 것입니다. 방금 "Copy Helper Tools"(일부 명령 줄 도구 및 도우미 앱을 macOS 앱 제품의 Contents / Helpers에 복사)보다 먼저 "Copy Bundle Resources"를 이동했습니다. 그러나이 둘의 순서는 차이를 가져야하기 때문에 – 파일을 복사 할뿐 – 의미가 없습니다. 내가 버그를 제기 그래서 : 그것은 :( 작동 할 때까지 다양한 복사 XXX 빌드 페이즈 주위에 스왑 : 42927301. 내이 솔루션을 수정
제리 Krinock

2
나도 마찬가지로, Copy Bundle Resources를 Copy Files 단계 위로 옮겼고 지금 작동하기 전에 미리 준비했습니다. 나는 버그 @JerryKrinock 속는 것
피터 N 루이스

저에게 문제는 Embed Frameworks 종속성에 있었기 때문에 Embed Frameworks를 Copy Bundle Resources 위로 옮겼습니다.
Elena

19

Xcode 10의 새로운 빌드 시스템은 빌드에서 종속성주기를 감지하고이를 해결하는 데 도움이되는 진단을 제공합니다. 이러한 종속성주기를 수정하면 빌드의 안정성이 향상되어 올바른 제품이 일관되게 생성됩니다 (주기는 파생 데이터를 삭제해야하는 가능한 원인 일 수 있음). 또한 빌드의 주기로 인해 빌드 그래프의 항목이 각 빌드에서 항상 최신 상태가 아니므로 빌드 할 때마다 빌드가 불필요하게 다시 실행되므로 증분 빌드 시간이 향상됩니다.

Xcode Help : 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

여기에 소스가 있고 Xcode 10 베타 4에 있습니다.

편집 : 이제 Xcode 10.0에서 여전히 관련이 있습니다.


지난주 Xcode 10.1 (10B61)에서 다시 발생했지만 여전히 작동했습니다. 수행 할 수 있는지 확인 Clean Build Folder단계를 수행하기 전에 (그리고 종료 엑스 코드 세력의 도움도) 2.3..
gabuchan dec.

매력처럼 일했다!
플래그 맨

15

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나는 공유 스위프트 헤더 import 문을 제거하고 그것을 변경 @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 der Neut

14

마침내 메인 타겟의 Embed App Extensions스크립트 Build Phases를 마지막 위치 로 이동하여이 문제를 해결할 수있었습니다 .


Xcode 10.0 베타 4 (10L213o)에서이 오류가 발생했습니다 –이 해결 방법으로 해결되었습니다. :-)
StackUnderflow

11

사실, Xcode의 prompt에만주의를 기울 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.

실행, 성공적으로 컴파일되었습니다.

원칙은 간단합니다. 컴파일 순서 만 변경하면됩니다.

이미지 1

Xcode 10.2 및 Swift 5


2
이것은 한 번만 작동하고 다음 빌드 명령에서 문제가 다시 발생합니다.
Swati

6

나는 같은 문제에 직면했다 : 아래는 오류였습니다.

대상 'Pods-MyAppName'과 'RxCocoa'간의 종속성을 순환합니다. 건물은 신뢰할 수없는 결과를 생성 할 수 있습니다. 이 문제는 일반적으로 소스 컴파일 전에 대상의 헤더 빌드 단계를 이동하여 해결할 수 있습니다. 주기 경로 : Pods-MyAppName → RxCocoa → Pods-MyAppName

아래 단계를 사용하여 해결했습니다.

1). Pods-MyAppName 프로젝트의 대상 RxCocoa로 이동

2) 빌드 단계로 이동

3) Headers Phase를 끌어서 Complile Sources 빌드 단계 위로 이동합니다.

이것은 내 문제를 해결했습니다. 도움이 되었기를 바랍니다.


6

대상의에서 Scheme레이블을 발견 Build하고, 그 확인 Find Implicit Dependencies확인하지 않습니다. 이 단계는 작동 할 수 있습니다.


"닫기"라고하면 색상과 체크 표시가 있어야한다는 뜻입니까? 아니면 체크 표시없이 비어 있어야합니까?
Ben Leggiero

1
안녕하세요, @BenLeggiero. "닫기"는 체크 표시없이 비어 있어야 함을 의미합니다.
Nh Xu

3

내 솔루션은 단순히 빌드 폴더를 정리 한 다음 다시 빌드하는 것입니다.


아무도이 솔루션에 대해 평가하지 않은 것이 놀랍습니다. 간단하지만 문제에 대해 더 깊이 들어가기 전에 먼저 시도해야 할 것입니다.
Hoon

3

내 문제는 빠른 브리징 헤더와 목표 c 파일 간의 순환 종속성과 관련이 있습니다.

내 객관적인 c 헤더 파일에는 #import "...-swift.h"파일 이 있었고 몇 개의 신속한 파일에 해당 파일을 가져 오기와 함께 포함하여 순환 종속성을 유발했습니다.

이것이 해결책을 찾도록 이끈 StackOverflow입니다.

Objective C, 순환 종속성으로 인한 Swift 상호 운용성 문제

Swift 브리징 헤더가 Hopscotch-Swift.h 자체를 가져 오는 파일을 가져올 때 순환 참조를 방지하는 방법

편집하다:

위의 파일을 신속하게 변환하고 이로 인해 문제가 해결되었습니다.


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

활성화 한 후 (예로 설정) 오류를 제거했습니다.


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

동일한 문제와 오류가 있었지만 엔터티에 대해 "Created NSManagedObject Subclass"가 발생했을 때이 오류가 발생했습니다. 따라서 귀하의 오류가 Core Data에 대한 내 오류와 동일하다고 생각하는 경우 귀하에게 도움이 될 수있는 (그리고 저에게 도움이되는) 것은 다음과 같습니다.

  • "xcdatamodel"파일에서 엔티티를 클릭하십시오.
  • 오른쪽 막대로 이동하여 데이터 모델 검사기를 클릭하십시오.
  • "Module"을 "Current Product Module"로 변경
  • 마지막으로 "Codegen"을 "Manual / None"으로 변경합니다.
  • 청소 및 구축

다른 시나리오에서는 Xcode가 파일을 자동으로 생성하고 다른 파일을 생성하면 충돌이 발생하기 때문이라고 생각합니다.


1

Xcode 10.2.1 / 단위 테스트 대상. 내 단위 테스트 대상은 빌드 시간을 개선하기 위해 호스트 대상과 독립적입니다. - 옵션 을 선택 취소 Find Implicit Dependencies하여 해결하십시오 . 모든 종속성을 - .SchemeBuildBuild SettingsCompile 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

"스크립트 실행"을 빌드 단계의 맨 위로 이동하여이 문제를 해결했습니다.


-1

다음 두 가지 옵션이 효과적이었습니다. File-> Project / Workspace settings.

1, 파일-> 프로젝트 설정에서 빌드 시스템을 "레거시 빌드 시스템"으로 변경합니다.

2, 구성표를 편집하고 빌드 섹션에서 "병렬화 빌드"옵션을 선택합니다.


그것은 관련이 없습니다. 최신 빌드 시스템은이를 유발하지 않습니다.
Raptor

-1

LHS의 프로젝트 창에서 빌드 제품에 대해 RHS 창의 대상 멤버십 목록에서 선택하지 마십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.