내부 순환; 빌드에서 신뢰할 수 없는 결과를 생성할 수 있음: Xcode 오류
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에 대해서도 동일하게 받습니다.레거시 빌드 시스템으로 되돌리지 않고 이 오류를 해결하려면 어떻게 해야 합니까?
Xcode 10 빌드 시스템에 문제가 있는 사용자는 다음 단계에 따라 문제를 해결하십시오.
- Xcode에서 File->Project/Workspace 설정으로 이동합니다.
- 빌드 시스템을 레거시 빌드 시스템으로 변경합니다.
그러면 새로운 Xcode의 빌드 문제가 해결됩니다.
새 빌드 시스템으로 작업하려면 이 Apple Xcode 도움말 페이지에서 문제 해결 도움말을 찾을 수 있습니다.
저는 코코팟에 대해 이 문제를 겪고 있었습니다.솔루션은 빌드 폴더를 정리하여 모든 포드를 다시 설치한 다음 앱을 다시 만드는 것이었습니다.그 문제는 그렇게 스스로 해결되었습니다.
의 프롬프트인 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
모든 '파일 복사' 및 '라이브러리와 이진 연결' 빌드 단계보다 먼저 '번들 리소스 복사' 빌드 단계를 이동하여 문제를 해결했습니다.
이 문제가 발생한 Cocoapods에서 임시 해결 방법을 찾았습니다.
- 최버전의 cocoapod(1.5.3) 설치:
sudo gem update cocoapods
- 합니다.
rm -rf ~/Library/Developer/Xcode/DerivedData/*
pod install
소스는 여기 있고 저는 Xcode 10 베타 4에 있습니다.
편집: 이제 Xcode 10.0에서 사용되며 여전히 관련성이 있습니다.
Xcode 10의 새로운 빌드 시스템은 빌드의 종속성 사이클을 감지하고 이를 해결하는 데 도움이 되는 진단을 제공합니다.이러한 종속성 주기를 수정하면 빌드의 안정성이 향상되어 올바른 제품이 일관되게 생산됩니다(주기는 파생된 데이터를 삭제해야 하는 원인일 수 있음).또한 빌드 주기로 인해 각 빌드에서 빌드 그래프의 내용이 항상 최신이 아니므로 빌드할 때마다 빌드를 다시 수행할 필요가 없게 되므로 증분 빌드 시간이 단축됩니다.
Xcode 도움말: https://help.apple.com/xcode/mac/current/ #/dev621201fb0에서 몇 가지 일반적인 유형의 종속성 주기를 해결하는 방법에 대한 문서가 있습니다.
그렇긴 하지만, 이 사이클 진단은 좀 이상해 보입니다.빌드 단계를 다시 조정하여 문제를 해결할 수 있었던 것처럼 들리지만, 진단 결과가 문제를 제대로 설명하지 못한 것 같습니다.괜찮으시다면, 이 특정 사례에 대한 진단 개선에 대한 버그 보고서를 작성해 주시면 감사하겠습니다.https://bugreport.apple.com 에서 신청할 수 있습니다.관련이 있을 수 있는 프로젝트에 대한 모든 세부 정보를 포함하십시오. 문제를 재현하는 샘플 프로젝트가 이상적이지만 첨부할 수 없는 경우에도 프로젝트 구조에 대한 진단 및 아이디어가 도움이 됩니다.
Swift, Objective-C 및 CoreData 간의 상호 작용이 혼합된 것과 유사한 문제가 있었습니다. (Swift로 작성된) 제 프로젝트에서도 CoreData의 자동 생성된 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
그리고 그것은 걱정을 낳지 않았습니다.
저는 마침내 이사를 통해 이 문제를 해결할 수 있었습니다.Embed App Extensions
대본을 작성하다.Build Phases
주 대상에서 마지막 위치로 이동합니다.
제 해결책은 빌드 폴더를 정리한 후 다시 빌드하는 것이었습니다.
저는 같은 문제에 직면했습니다: 아래는 오류였습니다.
대상 'Pods-MyAppName'과 'RxCocoa' 간의 종속성을 주기적으로 유지합니다. 구축 시 신뢰할 수 없는 결과가 발생할 수 있습니다.이 문제는 일반적으로 소스 컴파일 전에 대상의 헤더 빌드 단계를 이동하여 해결할 수 있습니다.주기 경로: 포드-MyAppName → RxCocoa → 포드-MyAppName
다음 단계를 사용하여 해결했습니다.
. Pods-MyAppName 프로젝트의 대상 RxCocoa로 이동합니다.
빌드 단계로 이동
헤더 단계를 끌어 Compile Sources 빌드 단계 위로 이동합니다.
이것이 제 문제를 해결했습니다.도움이 되길 바랍니다!
대자의주서에서.Scheme
라을찾다니습벨▁the▁label다▁find니를 찾습니다.Build
그리고 확실하게 보장합니다.Find Implicit Dependencies
선택되지 않았습니다.이러한 단계는 효과가 있을 수 있습니다.
저도 코코팟과 같은 문제를 가지고 있습니다.
먼저 포드를 제거합니다.
rm -rf ios/Pods
포드를 다시 설치합니다.
cd ios && pod install && cd ..
그러면 앱을 실행하세요, 지금 작동합니다.
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
제 문제는 제 swiftbridging header와 제 목표 c 파일 사이의 주기적인 의존성과 관련이 있었습니다.
나의 목표 c 헤더 파일에서 나는.#import "...-swift.h"
파일을 저장한 다음 신속한 파일 몇 개에 해당 가져오기 파일을 포함하여 순환 종속성을 발생시켰습니다.
다음은 StackOverflow를 통해 솔루션을 찾을 수 있게 된 것입니다.
목표 C, 순환 종속성으로 인한 신속한 상호 운용성 문제
Swiftbridging 헤더가 Hopscotch-Swift.h 자체를 가져오는 파일을 가져올 때 순환 참조를 방지하는 방법
편집:
저는 위의 파일을 swift로 변환했고 이것으로 문제가 해결되었습니다.
(근본 문제를 해결할 때까지) 내가 찾은 가장 좋은 임시 해결책은 소스 코드를 간단하게 변경한 다음 다시 시도하는 것입니다.저는 공간을 조금이라도 바꾸는 것만으로도 그것을 다시 지을 수 있다는 것이라는 것을 발견했습니다.하지만 몇 번의 시도 후에 다시 발생할 가능성이 높기 때문에 이것은 확실히 일시적입니다.
이것은 빌드 폴더를 정리하는 것보다 더 낫습니다(특히 대규모 프로젝트에서). 빈 공간을 변경하고 재구성하는 것이 훨씬 빠르기 때문입니다.
포드 대상 내에서 빌드 단계의 순서를 변경해야 하는 것 같습니다.저는 머리글을 나머지 위로 이동하는 것이 효과가 있었습니다.Pod 파일에서 이를 자동화할 수 있습니다.
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
여기에서 이 문제를 해결할 수 있습니다.
파일 -> 작업영역 설정 -> 빌드 시스템:새 빌드 시스템
동일이에서도 같은 했습니다.Version 10.0 beta 3 (10L201y)
그리고 저는 새로운 빌드 시스템을 갖고 싶었습니다.
문제가 비활성화되었습니다.Enable Modules (C and Objective-C)
에Build Settings -> Apple Clang - Language - Modules
활성화한 후(YES로 설정) 오류를 제거했습니다.
코어_데이터
동일한 문제와 오류가 있었지만 엔티티에 대해 "NSManagedObject Subclass 생성"을 수행했을 때 이 오류가 발생했습니다.따라서 귀하의 오류가 핵심 데이터에 대한 오류와 동일하다고 생각하는 경우 다음과 같이 도움이 될 수 있습니다(도움이 될 수 있습니다.
- "xcdatamodel" 파일에서 엔티티를 클릭합니다.
- 오른쪽 막대로 이동하여 Data Model Inspector 클릭
- "모듈"을 "현재 제품 모듈"로 변경
- 마지막으로 "코드젠"을 "수동/없음"으로 변경합니다.
- 깔끔하고 체격이
다른 시나리오에서는 Xcode가 자동으로 파일을 생성하고 다른 파일을 생성하면 충돌이 발생하기 때문이라고 생각합니다.
Xcode 10.2.1/단위 테스트 대상.나의 유닛 테스트 목표는 호스트 목표와 독립적이어서 빌드 시간을 개선할 수 있습니다.선택 취소를 통해 해결Find Implicit Dependencies
에Scheme
-Build
옵션, 모든 종속성을 지정합니다.Build Settings
-Compile Sources
.
Xcode: 11.3.1 대상: XCITE 테스트 대상
빌드 폴더를 정리하는 명령 실행: rm -rf ~/라이브러리/개발자/Xcode/DerivedData/*
작업 공간 설정 변경:레거시 빌드 시스템 선택
저는 이 페이지에서 시도해봤지만, 제게 도움이 된 것은 대상의 복사본을 만들고 복사본의 이름을 업데이트(복사 접미사 제거)하고 이전 것을 삭제한 후 포드 설치를 한 것뿐입니다.
저는 Xcode를 11.4 버전으로 업데이트한 후 이 문제에 직면했습니다.11.2.1로 다운그레이드하면 수정됩니다.
한동안 이 문제도 있었습니다.포드 파일의 끝에 다음 블록을 추가했습니다(이 블록을 사용하면 일부 경고도 제거됩니다).
post_install do |installer|
installer.pods_project.targets.each do |target|
target.deployment_target = ios_version
target.build_configurations.each do |config|
config.build_settings['IOS_DEPLOYMENT_TARGET'] = 'iOS ' + ios_version
end
end
end
나도 이사했어요.use_frameworks!
근본적으로Podfile
.
저 같은 경우에는.
모든 포드를 제거하고 다시 설치하여 오류를 해결했습니다.
Remove Pods directory in ios folder
pod install
엑스포 전용
expo prebuild --clean
cd ios
pod install
yarn ios
만약 당신이 리액트 네이티브로 개발하고 있다면, 그것은 저에게 가장 좋은 방법이었습니다.
cd ios && rm -rf Pods && pod install && cd ..
cd ios && rm -rf Pods && pod install && cd ..
이것은 저에게 효과가 있었습니다.
LHS의 프로젝트 창에서 빌드 제품의 경우 RHS 창의 대상 구성원 목록에서 제품을 선택하지 마십시오.
파일->프로젝트/작업공간 설정이라는 두 가지 옵션이 제게 효과가 있었습니다.
1, 파일->프로젝트 설정에서 빌드 시스템을 "레거시 빌드 시스템"으로 변경합니다.
2, 구성표를 편집하고 빌드 섹션에서 "Parallelize Build" 옵션을 선택합니다.
언급URL : https://stackoverflow.com/questions/50709330/cycle-inside-building-could-produce-unreliable-results-xcode-error
'sourcecode' 카테고리의 다른 글
GitHub 풀 요청을 Git로 확인하려면 어떻게 해야 합니까? (0) | 2023.07.07 |
---|---|
Java에서 Excel 워크북 간에 시트를 복사하는 방법 (0) | 2023.07.02 |
int가 짧고 잘린 경우 새 값은 어떻게 결정됩니까? (0) | 2023.07.02 |
고유 인덱스가 있을 때 Oracle 10g과 11g 사이의 REF CURSOR에 대한 다른 동작? (0) | 2023.07.02 |
프로그래밍 방식으로 발사 버튼 클릭 이벤트? (0) | 2023.07.02 |