Xcode 11.4 - Архивирование проекта - Ошибка сегментации 11

12

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

Этот проект архивировал бы с Xcode 11.3.1, но теперь это не ..

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

введите описание изображения здесь

Изменить: 15 апреля 2020

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

Артур Маркетто
источник
Посмотрите на этот пост: stackoverflow.com/a/42168123/2583679
Том
3
@ Спасибо, однако, это не исправляет .. я уверен, что это ошибка Apple
Артур Маркетто

Ответы:

11

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

В моем случае проблема исчезает , когда я изменить параметр Enable Тестируемости в YES для выпуска .

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

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

Дэвид Монгл
источник
Столкнулся с той же проблемой в Xcode 11.4.1, изменение этой настройки работало и для меня. В документах говорится, что этот флаг связан с тем, чтобы сделать частные интерфейсы доступными, поэтому, возможно, что-то там есть ... Когда этот параметр активирован, продукт будет построен с параметрами, подходящими для запуска автоматических тестов, такими как предоставление частных интерфейсов, доступных для тесты. Это может привести к тому, что тесты будут выполняться медленнее, чем без включенной тестируемости.
keegan3d
5

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

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

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

// Leads to error with Xcode 11.4
init(value: UIColor = Constants.staticBoolean ? .white : .green)
Samps
источник
2
Огромное спасибо!! вы сделали мой день!!
Номном
3
Это исправляет мою ошибку во время сборки тоже. Троичный оператор в параметре по умолчанию является виновником. Надеюсь, Apple исправит ошибку в ближайшее время.
Дао Сян
2
Я не воспроизводю с мастер-веткой Swift github.com/apple/swift/tree/master . Так что, возможно, уже исправлено.
Cœur
1

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

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

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

pod 'Eureka', '~> 5.2.1'

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

landonandrey
источник
0

Я поменял #imageLiteral(resourceName: "image_name")наUIImage(imageLiteralResourceName: "image_name")

susemi99
источник
0

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

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

    public init() {}
}

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

.modifier(WrapInScrollView())

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

Люк Смит
источник
0

К сожалению, решение Enable Testability не сработало для меня.

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

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

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

jc_35
источник
-1

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

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

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

Сэм Мюллер
источник