Xcode 11.4 - Архивирование проекта - Ошибка сегментации 11 - PullRequest
12 голосов
/ 26 марта 2020

Я только что обновил XCode до 11.4, и при архивировании проекта он показывает «Ошибка сегментации 11»

Этот проект будет архивироваться с XCode 11.3.1, но теперь это не так.

Кто-нибудь еще сталкивался с той же проблемой?

enter image description here

Редактировать: 15 апреля 2020

Apple только что выпустила Xcode 11.4.1

Ответы [ 7 ]

11 голосов
/ 28 марта 2020

Я столкнулся с той же проблемой. В архивировании используется конфигурация сборки выпуска, поэтому я проверил все настройки компилятора, чтобы выяснить, какие из различий приводят к этим сбоям сегментации.

В моем случае проблема исчезает, когда я изменяю настройку Включить тестируемость на ДА для Отпустить .

Нет, я понятия не имею, какие минусы у этого есть в архиве или сборке релиза, или действительно, почему этот конкретный параметр облегчает проблему, но в конце дня у меня есть проект, который принял год, чтобы добраться до этой стадии, и я очень заинтересован, чтобы передать это внутренним бета-тестерам, поэтому я собираюсь представить это через тестовый полет и посмотреть, как я go.

Мне кажется, что это определенно Ошибка Apple, поскольку компилятор не должен быть Seg Faulting вообще. Тот факт, что он компилируется в конфигурации Debug, подтверждает это. Мой проект настолько велик, что я не знаю, как воспроизвести это, чтобы отправить сообщение об ошибке, но я посмотрю, смогу ли я получить ответ на форумах Apple.

5 голосов
/ 30 марта 2020

Для меня помог найти проблему, когда я установил в настройках сборки SWIFT_COMPILATION_MODE на wholemodule. Затем после компиляции появилась более конкретная ошибка c, которая привела к функции класса, которая вызвала ошибку. Потом изменил его обратно на прежнее.

Может быть, вам это тоже поможет.

В моем случае для задания параметров ввода init использовался троичный оператор. Похоже, Swift 5.2 больше его не поддерживает.

// Leads to error with Xcode 11.4
init(value: UIColor = Constants.staticBoolean ? .white : .green)
1 голос
/ 24 апреля 2020

В моем случае у меня была ошибка с Eureka pod

Segmentation fault: 11 (in target 'Eureka' from project 'Pods')

В файле Pods я предоставил последнюю версию:

pod 'Eureka', '~> 5.2.1'

Также установите SWIFT_COMPILATION_MODE на wholemodule.

0 голосов
/ 22 апреля 2020

К сожалению, решение Включить тестируемость у меня не сработало.

Временное решение (пока Apple не исправит проблему компилятора Xcode 11.4 Swift) поверните Уровень оптимизации на " Без оптимизации " для выпуска, на цели, которая терпит неудачу (SWIFT_OPTIMIZATION_LEVEL = "-Onone";). Это работает над нашим проектом, который разделен на несколько структур. Нужно просто установить -Onone.

Но в документации Apple просит не отправлять ваш код с этим флагом . Он предназначен для разработки, он выполняет минимальные оптимизации и сохраняет всю отладочную информацию.

Я думаю, что нам нужно подождать: '(

0 голосов
/ 10 апреля 2020

Я изменил #imageLiteral(resourceName: "image_name") на UIImage(imageLiteralResourceName: "image_name")

0 голосов
/ 01 апреля 2020

Как и другие респонденты, здесь была ошибка SwiftUI, скрытая в сообщениях об ошибках здесь (с использованием Xcode 11.4). В моем случае использование .embedInScrollView() вызывало ошибку сборки. Отключение этих звонков исправило это. В качестве обходного пути я помещаю .embedInScrollView() в ViewModifier, например, так:

public struct WrapInScrollView: ViewModifier {
    public func body(content: Content) -> some View {
        content
            .embedInScrollView()
    }

    public init() {}
}

Затем я использую этот модификатор немного как исходный вызов, например:

.modifier(WrapInScrollView())

This означает, что вы все еще можете встроить в scrollView, но ошибки Seg 11 go прочь.

0 голосов
/ 31 марта 2020

Я получил это исключение, и архивные журналы помогли мне понять, что это было в определенном файле SwiftUI. В процессе исключения выясняется, что я оставил модификаторы contentInsets() и alwaysBounceVertical() на VStack, который не был частью List:

VStack {
    // more stuff
}
.contentInsets(UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0))
.alwaysBounceVertical()

Удаление этих модификаторов позволило выпустить архив для успешного завершения.

...