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 settings로 이동합니다.
- 빌드 시스템을 레거시 빌드 시스템으로 변경합니다.
새로운 Xcode로 빌드 문제가 해결됩니다.
새로운 빌드 시스템으로 작업하려면 이 Apple Xcode 도움말 페이지에서 문제 해결 도움말 을 찾을 수 있습니다 .
답변
Cocoapods 에서이 문제가 발생했습니다. 해결책은 빌드 폴더를 정리하고 모든 포드를 다시 설치 한 다음 앱을 다시 빌드하는 것입니다. 문제는 저절로 해결되었습니다.
답변
모든 ‘파일 복사’및 ‘라이브러리와 바이너리 연결’빌드 단계 이전에 ‘번들 리소스 복사’빌드 단계를 이동하여 문제를 해결했습니다.
답변
Xcode 10의 새로운 빌드 시스템은 빌드에서 종속성주기를 감지하고이를 해결하는 데 도움이되는 진단을 제공합니다. 이러한 종속성주기를 수정하면 빌드의 안정성이 향상되어 올바른 제품이 일관되게 생성됩니다 (주기는 파생 데이터를 삭제해야하는 가능한 원인 일 수 있음). 또한 빌드의 주기로 인해 빌드 그래프의 항목이 각 빌드에서 항상 최신 상태가 아니므로 빌드 할 때마다 빌드가 불필요하게 다시 실행되므로 증분 빌드 시간이 향상됩니다.
Xcode Help : https://help.apple.com/xcode/mac/current/#/dev621201fb0 에 몇 가지 일반적인 종속성주기 유형을 해결하는 방법에 대한 문서가 있습니다.
즉,이주기 진단은 약간 이상해 보입니다. 빌드 단계를 다시 정렬하여 문제를 해결할 수 있었던 것 같지만 진단이 실제로 문제를 설명했다고 생각하지 않습니다. 마음에 들지 않으시면이 특정 사례에 대한 진단 개선에 대한 버그 보고서를 보내 주시면 감사하겠습니다. https://bugreport.apple.com 에서 신고 할 수 있습니다 . 관련성이 있다고 생각되는 프로젝트에 대한 모든 세부 정보를 포함하십시오. 문제를 재현하는 샘플 프로젝트가 이상적이지만 첨부 할 수없는 경우 프로젝트 구조에 대한 진단 및 몇 가지 아이디어가 여전히 도움이됩니다.
답변
Cocoapods에서이 문제가 발생했으며 임시 해결 방법을 찾았습니다.
- 최신 버전의 cocoapods (1.5.3) 설치 :
sudo gem update cocoapods
- 파생 된 데이터를 삭제합니다.
rm -rf ~/Library/Developer/Xcode/DerivedData/*
pod install
여기에 소스가 있고 Xcode 10 베타 4에 있습니다.
편집 : 이제 Xcode 10.0에서 여전히 관련이 있습니다.
답변
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
그리고 그것은 걱정거리를 만들지 않았습니다.
답변
마침내 메인 타겟의 Embed App Extensions
스크립트 Build Phases
를 마지막 위치 로 이동하여이 문제를 해결할 수있었습니다 .