Właśnie zaktualizowałem Xcode do 11.4, a podczas archiwizacji projektu wyświetla mi się komunikat „Błąd segmentacji 11”
Ten projekt zostałby zarchiwizowany za pomocą Xcode 11.3.1, ale teraz nie ..
Czy ktoś jeszcze wpadł na ten sam problem?
Edycja: 15 kwietnia 2020 r
Firma Apple właśnie wydała Xcode 11.4.1
swift
xcode
segmentation-fault
Artur Marchetto
źródło
źródło
Odpowiedzi:
Natrafiłem na ten sam problem. Archiwizacja korzysta z konfiguracji kompilacji Release, więc przeszedłem przez wszystkie ustawienia kompilatora, aby dowiedzieć się, które z różnic prowadzą do tych błędów segmentacji.
W moim przypadku problem znika po zmianie ustawienia Włącz testowalność na TAK dla wydania .
Nie, nie mam pojęcia, jakie są tego wady w kompilacji archiwum lub wydania, a nawet dlaczego to konkretne rozwiązanie łagodzi problem, ale na koniec mam projekt, który zajęł rok, aby przejść do tego etapu i bardzo zależy mi na tym, aby przekazać to wewnętrznym testerom wersji beta, więc zamierzam to przesłać podczas lotu testowego i zobaczyć, jak sobie radzę.
Mam wrażenie, że jest to zdecydowanie błąd Apple, ponieważ kompilator nie powinien w ogóle powodować błędów Seg. Obsługuje to fakt, że kompiluje się w konfiguracji Debug. Mój projekt jest tak duży, że nie wiem, jak go odtworzyć, aby zgłosić błąd, ale zobaczę, czy mogę uzyskać odpowiedź na forach Apple.
źródło
Dla mnie pomógł znaleźć problem, kiedy ustawiłem w ustawieniach kompilacji
SWIFT_COMPILATION_MODE
nawholemodule
. Następnie po kompilacji dostał bardziej szczegółowy błąd, który doprowadził do funkcji klasy, która spowodowała błąd. Potem zmieniłem to z powrotem, tak jak było.Może to też pomaga.
W moim przypadku użyto operatora trójskładnikowego dla zestawu parametrów wejściowych init. Wygląda na to, że Swift 5.2 już go nie obsługuje.
źródło
W moim przypadku miałem błąd z kapsułą Eureka
W pliku Pods podałem najnowszą wersję:
Ustaw także
SWIFT_COMPILATION_MODE
nawholemodule
.źródło
Zmieniłem się
#imageLiteral(resourceName: "image_name")
naUIImage(imageLiteralResourceName: "image_name")
źródło
Podobnie jak inni respondenci, w komunikatach o błędach (w Xcode 11.4) został ukryty problem SwiftUI. W moim przypadku użycie
.embedInScrollView()
spowodowało błąd kompilacji. Wyłączenie tych połączeń naprawiło to. W celu obejścia tego problemu wprowadziłem.embedInScrollView()
ViewModifier w następujący sposób:Następnie używam tego modyfikatora trochę jak oryginalnego wywołania, jak poniżej:
Oznacza to, że nadal możesz osadzać w scrollView, ale błędy Seg 11 znikają.
źródło
Niestety rozwiązanie Enable Testability nie zadziałało.
Tymczasowym obejściem (do czasu rozwiązania przez Apple problemu kompilatora Xcode 11.4 Swift) jest przełączenie poziomu optymalizacji na „ Brak optymalizacji ” dla wydania, w przypadku celu, który się nie powiedzie (
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
). Działa w naszym projekcie, który jest podzielony na wiele ram. Trzeba tylko ustawić-Onone
.Ale dokumentacja Apple prosi o nie wysyłanie kodu z tą flagą . Jest przeznaczony do programowania, wykonuje minimalne optymalizacje i zachowuje wszystkie informacje debugowania.
Myślę, że musimy poczekać: ”(
źródło
Otrzymywałem ten wyjątek, a dzienniki archiwum pomogły mi zrozumieć, że znajduje się on w określonym pliku SwiftUI. W procesie eliminacji okazuje się, że zostawiłem
contentInsets()
ialwaysBounceVertical()
modyfikatory,VStack
które nie były częściąList
:Usunięcie tych modyfikatorów pozwoliło na pomyślne ukończenie archiwum wydania.
źródło