dyld`__abort_with_payload: Bez komunikatu o błędzie

85

Kiedy uruchamiam aplikację z XCode, mam awarię, ale nie ma błędu

Aplikacja właśnie zatrzymuje się w tym wątku

wprowadź opis obrazu tutaj

Co mogę zrobić, aby uzyskać więcej informacji o problemie?

Kevin ABRIOUX
źródło

Odpowiedzi:

107

Jeśli używasz niestandardowych frameworków, musisz umieścić je w sekcji „Osadzone pliki binarne” znajdującej się w projekcie Xcode w zakładce Cel / Ogólne.

mkonovalov
źródło
1
Mam niestandardową strukturę i jest ona wymieniona w sekcji „Osadzone pliki binarne” w projekcie Xcode w obszarze Cel> Ogólne. Nadal pojawia się ten problem, gdy próbuję uruchomić testy jednostkowe. Niedawno zaktualizowałem części mojego kodu Swift do Swift 3 (z 2). Jeśli to pomoże ...
Mario A Guzman
@MarioAGuzman Jak to naprawić? Problem pojawia się również po migracji Swift 3
iOS
@iOS Niestety nie udało mi się to naprawić. Problem rozwiązał się sam z Xcode 8.3, który właśnie został wydany.
Mario A Guzman
Dlaczego to musi być w sekcji Osadzone pliki binarne? Próbuję użyć ObjectiveDropboxOfficial.framework. Otrzymywałem ten błąd, umieściłem go w programie Embedded i „naprawiłem”. Jednak wyjąłem go ponownie i pozostaje „naprawiony”. Jednak inne cele, które są skonfigurowane z tym samym AFAICT, kończą się niepowodzeniem. Dokumenty instalacyjne Dropbox nie mówią, aby umieścić je we wbudowanych strukturach.
Jim Leask
To pomogło. Upewnij się również, że nie masz duplikatów w „Połączonych strukturach i bibliotekach”. Po dodaniu do sekcji Osadzone automatycznie dodaje ją do sekcji Połączone.
milesmeow
59

Dla mnie proste Cleani Rebuildzałatwione. Mam nadzieję, że to pomoże.

FlixMa
źródło
81
Wyczyść, czysty folder kompilacji, usuń zawartość folderu danych pochodnych, zainstaluj pod (w stosownych przypadkach), uruchom ponownie Xcode, uruchom ponownie komputer; potem posmaruj drzwi krwią baranka
johnnyclem
1
Mnie też pomogło !!
Dmitriy Greh
Usunięcie katalogu i pobranie ostatniego zatwierdzenia z git nie pomogło, ale wyczyszczenie i odbudowanie pomogło lol
え る ま る
8
W moim przypadku musiałem zawiązać chili i cytrynę na framudze drzwi.
Naresh
1
Musiałem też poświęcić mojego pierwszego syna, ale zadziałało!
Andor Németh
25

wprowadź opis obrazu tutajTen problem pojawił się po aktualizacji systemu do wersji beta macOS 10.15.2. Wyłączenie „Thread Sanitizer” rozwiązało problem (Xcode 11.2). Teraz nie mogę używać Thread Sanitizer i muszę czekać na następną aktualizację systemu operacyjnego.

Дмитрий Акимов
źródło
6
Ten post odpowiada na pierwotne pytania, kiedy problem pojawia się w symulatorach Xcode 11.3 po aktualizacji do wersji Mac 10.15.2. Wygląda na to, że błąd Apple'a, zobacz forums.developer.apple.com/thread/126891
Vadim Motorine
19

Dodanie struktury do listy osadzonych zasobów binarnych rozwiązało ten problem. Oto jak wygląda konfiguracja obcego frameworka w ostatecznej formie w Xcode GUI jako Embedded Framework (Xcode 9.2, osobiście wolę wizualny ślad okruchów chleba ;-)): wprowadź opis obrazu tutaj

Czy Apple celowo zawiesił środowisko wykonawcze, aby w jakiś sposób poinformować dewelopera o problemie, że nie można używać frameworków innych niż Apple jako prostych połączonych frameworków w programowaniu iOS? Byłoby lepiej, gdyby pojawił się jako błąd kompilacji, myślę ... z przyciskiem z napisem „przesuń to!”

Korzystanie z wbudowanych plików binarnych sprawia, że ​​użytkownik końcowy nie musi dodawać Framework niezależnie od aplikacji (lub musisz zrobić to z instalatorem). W przypadku iPhone'a (iOS) jest to niemożliwe, ale na macOS jest to możliwe, ale może szybko się zabrudzić.

Dla użytkownika końcowego znacznie przyjemniej jest po prostu przeciągnąć i upuścić aplikację, aby zainstalować ją w systemie MacOS, co oznacza, że ​​osadzenie staje się korzyścią. Osadzanie pozwala również uniknąć klasycznych „konfliktów bibliotek DLL” związanych z zarządzaniem zewnętrznymi wersjami platformy. (miejsce na dysku jest tanie, czas klienta jest cenny).

William Cerniuk
źródło
Mała aktualizacja. Xcode 10.1 pozwala teraz na przeciągnięcie niestandardowego środowiska z sekcji „Połącz pliki binarne z bibliotekami”, gdzie jest ono domyślnie przenoszone, do sekcji „Kopiuj zasoby pakietu”, gdzie musi być ... To już nie tylko kopiuje odniesienie ale też go porusza. Zrzut ekranu tutaj: stackoverflow.com/questions/24993752/ ...
William Cerniuk
13

Właśnie naprawiłem błąd w moim projekcie!
Jeśli używasz szybkiego frameworka w projekcie Object-C, radzę zmienić ustawienia kompilacji.
Opcja Zawsze osadzaj Swift Standard Libraries na TAK. lubię to:wprowadź opis obrazu tutaj

mam nadzieję, że to było dla ciebie przydatne.

Hongbo Liu
źródło
To zadziałało, nawet jeśli (najwyraźniej) nie ma szybkiego kodu w moim projekcie.
Jim75
XCode zmienił wartość z powrotem na Nie i zapomniałem o tym. Dzięki :)
SeikoTheWiz
13

Wreszcie rozwiązany!

Udało mi się uczynić framework „opcjonalnym” zamiast „wymaganym”.

Mam nadzieję, że to pomoże!

Eran Talmor
źródło
super człowieku, walczyłem z tym problemem 1,5 dnia. nawet znalazłem tę fajną matrycę twitter.com/isupportmatrix zmieniając ją na wymagane rozwiązane również po mojej stronie
swift2geek
a także działało tylko z ustawieniem w Plik -> Ustawienia projektu-> System kompilacji starszego typu
swift2geek
10

Xcode 11.1 , Wyłącz Do not Embed, Embed & Signto fajna opcja.

0

222

Dzięki @mkonovalov, @William Cerniuk

czarna Perła
źródło
1
Pracował dla mnie. +1
abhimuralidharan
1
Ten krok jest obowiązkowy, gdy próbujesz osadzić niestandardową strukturę w swojej aplikacji.
Akash Bhardwaj
6

1) Kontynuuj wykonywanie, aby sprawdzić, czy w debugerze nie pojawił się żaden komunikat, taki jak „MyFramework.framework”, nie znaleziono. Jeśli tak jest, wykonaj tę dyskusję: Biblioteka OS X Framework nie została załadowana: `` Nie znaleziono obrazu '' Dla mnie ta odpowiedź zadziałała: https://stackoverflow.com/a/44796734/4060763

2) Upewnij się, że dodałeś pliki binarne w sekcji „Osadź pliki binarne”.

3) Upewnij się, że masz włączone podpisywanie struktur w sekcji fazy kompilacji.

4) Upewnij się, że osadzone struktury nie są dowiązaniami symbolicznymi.

5) Połączone frameworki można uczynić opcjonalnymi zamiast wymaganymi w fazie „Łączenie plików binarnych z bibliotekami”. To powie iOS, aby nie szukał tych frameworków podczas uruchamiania. Ale i tak musisz naprawić błędy, aby używać tych frameworków!

6) Sprawdź, czy wszystkie wpisy w serwisie info.plist są prawidłowe. W moim przypadku używałem pliku info.plist na Maca dla iOS. Szukał pliku xib, którego nie było w projekcie iOS.

7) Po każdej takiej zmianie wyczyść i zbuduj. Jest to wymagane, ponieważ xcode nie kopiuje / nie zmienia tych plików, jeśli już istnieją.

8) Usuń aplikację z iPada, a następnie zainstaluj. Z tego samego powodu co w 7.

coolVick
źródło
6

Odznaczenie "Guard Malloc" w diagnostyce zadziałało. Aby zapoznać się z ustawieniami, patrz Obraz

nieskończona pętla
źródło
2
Guard Malloc, aby być poprawnym. Czy ktoś wie, dlaczego naprawia awarię?
Mojo66
1
Możesz także spróbować wyczyścić projekt, a następnie uruchomić go ponownie lub po prostu ponownie uruchomić Xcode. Tego rodzaju błędy są po prostu irytujące i przypominają błędy w Xcode
Karanveer Singh.
5

Aby odpowiedzieć na pierwotne pytanie „Co mogę zrobić, aby uzyskać więcej informacji o problemie?”, Ten wątek na forum Apple zawiera bardzo prostą wskazówkę: po prostu uruchom aplikację powodującą awarię poza XCode (tj. urządzenie). Spowoduje to utworzenie dziennika awarii zawierającego więcej szczegółów na temat tego, co się stało. Następnie możesz przejrzeć ten dziennik z menu XCode Window / Devices and Simulators -> View Device Logs.

fred
źródło
4

Właśnie przegapiłem zastosowanie „Prywatności - Opis użycia kamery” w info.plist.

Nie wiem, czy te informacje pomogą komukolwiek innemu ...

Linus
źródło
4

Napotkałem ten sam problem z Xcode 11.3 i macOS Catalina 10.15.2. Aplikacja działała dobrze na urządzeniu, ale nie na symulatorze. Wygląda na to, że wystąpił problem z symulatorem i obejściem jest wyłączenie narzędzia Thread Sanitizer.

Zobacz: https://forums.developer.apple.com/message/397978#397978

Mam nadzieję że to pomoże.

Pankaj Kulkarni
źródło
3

Napotkałem błąd z tą samą sygnaturą (mój projekt był w Obj-C) i odkryłem, że zapomniałem połączyć się z odpowiednim frameworkiem. Komunikat o błędzie w dzienniku debugowania, który doprowadził do znalezienia błędu, to:

dyld: Nie znaleziono symbolu: _OBJC_CLASS _ $ _ SFSafariViewController

W przypadku mojego konkretnego błędu dodanie SafariServices.framework w Celach -> Fazy kompilacji -> „Połącz plik binarny z bibliotekami” rozwiązało problem. Chociaż prawdopodobnie nie masz tego samego konkretnego błędu i rozwiązania, przydatne jest sprawdzenie dziennika debugowania pod kątem wskazówek.

user1825506
źródło
2

Miałem taką sytuację po aktualizacji Xcode do v10.2.1 i swift do v5.0. Jeśli używasz Carthage + RxSwift, nowy RxSwift używa RxRelay.framework. Powinieneś przejść do swojego katalogu / Carthage / Build, znaleźć ten framework i pobrać go do swojego projektu. Nie zapomnij również dodać go do swojego carthage copy-frameworksskryptu: $(SRCROOT)/Carthage/Build/iOS/RxRelay.framework

Rozwiązane dzięki: https://stackoverflow.com/a/52550148/2493555

milczi
źródło
1

Jeśli używasz frameworka napisanego w Swift w aplikacji Objective-C, musisz dołączyć Swift toolchain do aplikacji, która używa frameworka.

Sposób, w jaki udało mi się to zrobić, polega na utworzeniu w aplikacji fikcyjnego pliku Swift, aby XCode rozpoznał go i odpowiednio dodał do projektu. Następnie możesz usunąć fikcyjny plik.

Chciałbym, żeby ktoś znał lepszy sposób na jawne dodanie swift do projektu obiektywnego c bez dodawania szybkiego pliku.

markw
źródło
1

jeśli używasz frameworka budującego Carthage, po przeciągnięciu frameworka do swojego projektu, powinieneś dodać go do plików binarnych General / Embeded.

osoba odpowiedzialna
źródło
1

Znajduję właściwy sposób rozwiązania tego problemu.

Upewnij się, że AppleWWDRCA.cerustawiony jest domyślny tryb systemu, wtedy zadziała:

wprowadź opis obrazu tutaj

Lew
źródło
U mnie też zadziałało.
dev_shanghai,
1

Miałem ten sam problem. Ustawienie „Zawsze osadzaj Swift Standard Libraries” na Tak w ustawieniach kompilacji mojego celu zadziałało.

Arpit Panda
źródło
1

Miałem podobny problem, który został rozwiązany przez brak specyfikacji uprawnień w plist (tak dziwne, jak to jest ...)

Próbowałem użyć AVCaptureDevice i właśnie się zawiesił podczas uruchamiania (moja aplikacja była bardzo minimalna)

Dodawanie - Privacy - Camera Usage Description aby info.plistrozwiązać to za mnie.

Rock_Artist
źródło
1

Aby dodać do długiej listy spotkań z tym błędem, występuje on, gdy korzystam z XCode12.2 Beta 2 i wdrażam go na moim komputerze Mac z systemem MacOS 10.15.5 z celem wdrożenia ustawionym na MacOS 11.0. Taka sytuacja zdarzyła się, ponieważ podczas dodawania paska bocznego wypróbowywałem aplikację Mac Catalyst Tutorial . Przełączenie celu na MacOS 10.15.5 wyeliminowało błąd i poprawnie uruchomiło aplikację.

Steve Harris
źródło
0

Naprawiłem błąd w moim projekcie.
1. Sprawdź inne wątki, gdy wystąpił błąd. Mój błąd dotyczy aparatu.

wprowadź opis obrazu tutaj

  1. Dodaj prywatność kamery w pliku Info.plist.
    1) Otwórz plik info.plist.
    2) Dodaj nowy klucz o nazwie „Prywatność - Opis użycia kamery” i wprowadź ciąg opisujący, dlaczego aplikacja potrzebuje kamery. Opisy będą wyświetlane, gdy aplikacja będzie potrzebować prywatności.

wprowadź opis obrazu tutaj

WangYang
źródło
0

Właśnie miałem ten sam problem, a powód był taki, że odwołałem moje certyfikaty programisty i utworzyłem nowe za pomocą Xcode 10, po świeżej aktualizacji macOS Mojave (dla niektórych usunęło wszystkie dane logowania, a niektóre przestarzały certyfikaty pęku kluczy).

Wszystko, co musiałem zrobić, to usunąć zainstalowane aplikacje z mojego urządzenia i ponownie uruchomić je przez Xcode, aby zainstalować odpowiedni nowy profil obsługi administracyjnej na moim urządzeniu :)

Frank Eno
źródło
0

Czasami zdarza się, gdy używasz struktur systemowych, które są dostępne tylko z późniejszej wersji systemu iOS niż wersja docelowa. Można to naprawić, oznaczając tę ​​połączoną strukturę jako opcjonalną.

Na przykład projekt przeznaczony dla systemu iOS 11 i korzystający z funkcji AuthenticationServices dla systemu iOS 12 ulegnie awarii w systemie iOS 11 w opisany sposób.

lazarevzubov
źródło
0

Właściwie miałem problem z 11.3.1 i Thread Sanitizer był już wyłączony, jak wspomniano powyżej. W moim przypadku problem polegał na tym, że miałem różne wersje xCode w moim folderze aplikacji

/Applications/xcode11.3.1/Xcode.app
/Applications/xcode11.3/Xcode.app
/Applications/xcode10.1/Xcode.app

i

/Applications/Xcode.app - was 11.2

Zrozumienie, że system kompilacji domyślnie wygląda na plik /Applications/Xcode.app zajmuje mi 2 dni. Zatem przeniesienie wersji 11.3.1 do /Applications/Xcode.app w końcu rozwiązało problem

d.rozumeenko
źródło
0

Również jeśli używasz niestandardowych frameworków, upewnij się, że ustawiłeś typ Mach-O na bibliotekę statyczną. Czytałem gdzieś, że IOS nie pozwala na dylib. W każdym razie to zadziałało dla mnie.

Michael Ribbons
źródło
0

Ten sam problem wystąpił ze mną. Miałem iOS 14 Beta i problem został rozwiązany, kiedy zaktualizowałem go do oficjalnej wersji.

Dakata
źródło
-1

Doświadczyłem tego problemu tylko podczas pracy na prawdziwym urządzeniu (iPhone SE). Na symulatorze projekt działał zgodnie z oczekiwaniami.

Wypróbowałem wszystkie poprawki z tego wątku i stąd: Biblioteka OS X Framework nie została załadowana: `` Nie znaleziono obrazu '' Żaden z nich nie pracował dla mnie.

U mnie problem został rozwiązany po ponownym uruchomieniu iPhone'a (sic!).

Zrobiłem:

  • czysty folder kompilacji,
  • czyste dane pochodne,
  • usuń aplikację z urządzenia,
  • zrestartuj urządzenie

I w końcu działa. :)

Jeśli każde inne rozwiązanie zawodzi, nie zapomnij go wypróbować.

vandermesis
źródło
-3

Mam to posortowane według polecenia „pod install”.

Amandeep Singh
źródło