방금 Xcode를 11.4로 업데이트했으며 프로젝트를 보관하면 '세그먼트 결함 11'이 표시됩니다.
이 프로젝트는 Xcode 11.3.1로 보관하지만 현재는 그렇지 않습니다.
다른 사람이 같은 문제를 겪었습니까?
편집 : 2020 년 4 월 15 일
애플은 방금 Xcode 11.4.1을 출시
방금 Xcode를 11.4로 업데이트했으며 프로젝트를 보관하면 '세그먼트 결함 11'이 표시됩니다.
이 프로젝트는 Xcode 11.3.1로 보관하지만 현재는 그렇지 않습니다.
다른 사람이 같은 문제를 겪었습니까?
편집 : 2020 년 4 월 15 일
애플은 방금 Xcode 11.4.1을 출시
답변:
나는 같은 문제에 부딪쳤다. 아카이빙은 릴리스 빌딩 구성을 사용하므로 모든 분할 영역 설정을 통해 이러한 분할 오류로 이어지는 차이점을 해결했습니다.
내 경우에는 문제는 설정이 변경 될 때 사라 테스트 용이성 사용 에 YES 를위한 릴리스 .
아니요. 아카이브 또는 릴리스 빌드에 어떤 단점이 있는지, 또는 실제로이 특정 설정으로 문제가 완화되는 이유를 모르겠지만 하루가 끝나면이 단계에 도달하는 데 1 년이 걸린 프로젝트가 있습니다. 내부 베타 테스터에게이 기능을 제공하고 싶어서 테스트 비행을 통해 제출하고 어떻게 진행되는지 확인할 것입니다.
필자는 컴파일러가 Seg Faulting이 아니어야하므로 Apple 버그라고 생각합니다. 디버그 구성에서 컴파일한다는 사실은 이에 대한 지원을 제공합니다. 내 프로젝트가 너무 커서 버그를 제출하기 위해 이것을 재현하는 방법을 모르지만 Apple 포럼에서 응답을 얻을 수 있는지 볼 수 있습니다.
빌드 설정에서 SWIFT_COMPILATION_MODE
를로 설정할 때 문제를 찾는 데 도움이 되었습니다 wholemodule
. 그런 다음 컴파일 후 더 구체적인 오류가 발생하여 클래스 함수로 인해 오류가 발생했습니다. 나중에 원래대로 다시 변경했습니다.
어쩌면 그것은 또한 당신을 도울 것입니다.
필자의 경우 초기화 입력 매개 변수 세트에 삼항 연산자가 사용되었습니다. Swift 5.2는 더 이상 지원하지 않는 것 같습니다.
// Leads to error with Xcode 11.4
init(value: UIColor = Constants.staticBoolean ? .white : .green)
다른 응답자와 마찬가지로 여기에 오류 메시지 (Xcode 11.4 사용)에 SwiftUI 문제가 묻혀있었습니다. 제 경우 .embedInScrollView()
에는를 사용하여 빌드 오류가 발생했습니다. 그 전화를 비활성화하면 문제가 해결되었습니다. 해결 방법 .embedInScrollView()
으로 다음과 같이 ViewModifier를 넣었 습니다.
public struct WrapInScrollView: ViewModifier {
public func body(content: Content) -> some View {
content
.embedInScrollView()
}
public init() {}
}
그런 다음 해당 수정자를 원래 호출과 약간 비슷하게 사용합니다.
.modifier(WrapInScrollView())
이것은 여전히 scrollView에 포함 할 수 있지만 Seg 11 오류는 사라집니다.
불행히도 테스트 가능성 사용 솔루션이 작동하지 않았습니다.
임시 해결 방법 (Apple에서 Xcode 11.4 Swift 컴파일러 문제를 해결할 때까지)은 실패한 대상 ( ) 에서 최적화 수준 을 릴리스에 대해 " 최적화 없음 "으로 설정하는 것입니다 SWIFT_OPTIMIZATION_LEVEL = "-Onone";
. 여러 프레임 워크로 분할 된 프로젝트에서 작동합니다. 로 설정해야 -Onone
합니다.
그러나 Apple 문서 는 코드를이 플래그와 함께 제공하지 않도록 요구합니다 . 개발 용이며 최소한의 최적화를 수행하며 모든 디버그 정보를 유지합니다.
기다려야 할 것 같아 : '(
이 예외가 발생하여 보관 로그가 특정 SwiftUI 파일 내에 있음을 이해하는 데 도움이되었습니다. 제거 과정에서 내가 남은 부분 contentInsets()
과 alwaysBounceVertical()
수정자가 VStack
없는 부분으로 밝혀졌습니다 List
.
VStack {
// more stuff
}
.contentInsets(UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0))
.alwaysBounceVertical()
이러한 수정자를 제거하면 릴리스 아카이브가 성공적으로 완료되었습니다.