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?

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.


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.


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.


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).


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.


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!


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


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.


6

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


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.


4

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

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



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.


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


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.


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.


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


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.


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.


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ę.


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


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 :)


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.


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


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.


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.


-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ć.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.