dyld`__abort_with_payload: Ohne Fehlermeldung

86

Wenn ich meine App mit XCode starte, habe ich einen Absturz, aber keinen Fehler

Die App stoppt gerade in diesem Thread

Geben Sie hier die Bildbeschreibung ein

Was kann ich tun, um weitere Informationen zu diesem Problem zu erhalten?

Kevin ABRIOUX
quelle

Antworten:

107

Wenn Sie benutzerdefinierte Frameworks verwenden, müssen Sie diese im Abschnitt "Eingebettete Binärdateien" im Xcode-Projekt unter der Registerkarte "Ziel / Allgemein" ablegen.

mkonovalov
quelle
1
Ich habe ein benutzerdefiniertes Framework und es ist unter "Eingebettete Binärdateien" im Xcode-Projekt unter Ziel> Allgemein aufgeführt. Ich habe immer noch dieses Problem, wenn ich versuche, meine Komponententests durchzuführen. Ich habe kürzlich die Swift-Teile meines Codes auf Swift 3 (von 2) aktualisiert. Wenn das hilft ...
Mario A Guzman
@MarioAGuzman Wie haben Sie das Problem behoben? Ich bin auch mit dem Problem nach der Swift 3-Migration konfrontiert
iOS
@iOS Leider hatte ich keine wirkliche Lösung. Das Problem wurde mit Xcode 8.3 behoben, der gerade veröffentlicht wurde.
Mario A Guzman
Warum muss dies im Abschnitt "Eingebettete Binärdateien" sein? Ich versuche, das ObjectiveDropboxOfficial.framework zu verwenden. Ich habe diesen Fehler erhalten, ihn in Embedded eingefügt und ihn 'behoben'. Ich habe es jedoch wieder herausgenommen und es bleibt "repariert". Andere Ziele, die mit demselben AFAICT konfiguriert sind, schlagen jedoch fehl. In den Dropbox-Installationsdokumenten wird nicht angegeben, dass Embedded Frameworks eingefügt werden sollen.
Jim Leask
Das hat geholfen. Stellen Sie außerdem sicher, dass Sie keine Duplikate in den "Verknüpften Frameworks und Bibliotheken" haben. Wenn Sie es dem eingebetteten Abschnitt hinzufügen, wird es automatisch dem verknüpften Abschnitt hinzugefügt.
Meilen am
60

Für mich ein einfaches Cleanund Rebuildaussortiertes. Ich hoffe es hilft.

FlixMa
quelle
81
Bereinigen, Build-Ordner bereinigen, Inhalt des Ordners Abgeleitete Daten löschen, Pod-Installation (falls zutreffend), Xcode neu starten, Computer neu starten; dann schmieren Sie etwas
Lammblut
1
Hat mir auch geholfen !!
Dmitriy Greh
Das Löschen des Verzeichnisses und das Abrufen des letzten Commits von git haben nicht geholfen, aber das Bereinigen und Wiederherstellen hat geholfen
る ま る
8
In meinem Fall musste ich Chili und Zitrone an den Türrahmen binden.
Naresh
1
Ich musste auch meinen erstgeborenen Sohn opfern, aber es hat funktioniert!
Andor Németh
25

Geben Sie hier die Bildbeschreibung einDieses Problem trat nach dem Systemupdate auf macOS 10.15.2 Beta auf. Durch Deaktivieren von "Thread Sanitizer" wurde das Problem behoben (Xcode 11.2). Jetzt kann ich Thread Sanitizer nicht mehr verwenden und muss auf das nächste Betriebssystem-Update warten.

Дмитрий Акимов
quelle
6
Dieser Beitrag beantwortet die ursprünglichen Fragen, wenn das Problem in den Xcode 11.3-Simulatoren nach dem Upgrade auf Mac 10.15.2 auftritt. Es scheint der Apple-Fehler, siehe forums.developer.apple.com/thread/126891
Vadim Motorine
19

Das Hinzufügen des Frameworks zur Liste der eingebetteten binären Assets hat dies behoben. So sieht das Setup eines fremden Frameworks in der Xcode-GUI als Embedded Framework in endgültiger Form aus (Xcode 9.2, ich persönlich mag einen visuellen Brotkrumenpfad besser ;-)): Geben Sie hier die Bildbeschreibung ein

Hat Apple die Laufzeit absichtlich zum Absturz gebracht, um dem Entwickler das Problem mitzuteilen, dass Sie in der iOS-Entwicklung keine Nicht-Apple-Frameworks als einfach verknüpfte Frameworks verwenden können? Es wäre besser, wenn es als Build-Fehler angezeigt würde, denke ich ... mit einem Button mit der Aufschrift "Verschiebe es!"

Die Verwendung von eingebetteten Binärdateien verhindert, dass der Endbenutzer das Framework unabhängig von Ihrer App hinzufügen muss (oder mit einem Installationsprogramm arbeiten muss). Beim iPhone (iOS) ist das unmöglich, aber unter macOS ist es möglich, kann aber schnell chaotisch werden.

Für den Endbenutzer ist es viel schöner, eine App einfach per Drag & Drop zu installieren, um sie unter macOS zu installieren. Hier wird Embedded zum Vorteil. Durch das Einbetten werden auch die klassischen "DLL-Konflikte" vermieden, bei denen externe Versionen Ihres Frameworks verwaltet werden müssen. (Speicherplatz ist billig, die Zeit meines Kunden ist kostbar).

Rechnung
quelle
Kleines Update. Mit Xcode 10.1 können Sie jetzt das benutzerdefinierte Framework aus dem Abschnitt "Binär mit Bibliotheken verknüpfen", in dem es standardmäßig verwendet wird, in den Abschnitt "Bundle-Ressourcen kopieren" ziehen, in dem es sich befinden muss ... Es wird nicht mehr nur die Referenz kopiert aber bewegt es auch. Screenshot
Bill
13

Ich habe den Fehler in meinem Projekt gerade behoben!
Wenn Sie in Object-C Project ein schnelles Framework verwenden, empfehle ich Ihnen, die Build-Einstellungen zu ändern.
Die Option Swift Standard Libraries immer in YES einbetten. so was:Geben Sie hier die Bildbeschreibung ein

Ich hoffe, das war nützlich für Sie.

Hongbo Liu
quelle
Dies hat bei mir funktioniert, auch wenn mein Projekt (anscheinend) keinen schnellen Code enthält.
Jim75
XCode wurde auf Nein zurückgesetzt und ich hatte es vergessen. Danke :)
SeikoTheWiz
13

Endlich gelöst!

Was für mich funktioniert hat, war, das Framework "optional" statt "erforderlich" zu machen.

Hoffentlich hilft das!

Eran Talmor
quelle
Super Mann, ich habe 1,5 Tage mit diesem Problem gekämpft. auch fand diese schöne Matrix twitter.com/isupportmatrix auch an meiner Seite gelöst es erforderlich Wechsel
swift2geek
und es funktionierte auch nur mit der Einstellung in Datei -> Projekteinstellungen -> Legacy-Build-System
swift2geek
11

Xcode 11.1, ausschalten Do not Embed, Embed & Signist eine nette Option.

0

222

Danke @mkonovalov, @William Cerniuk

schwarze Perle
quelle
1
Hat für mich gearbeitet. +1
abhimuralidharan
1
In diesem obligatorischen Schritt versuchen Sie, Ihr benutzerdefiniertes Framework in Ihre App einzubetten.
Akash Bhardwaj
6

1) Setzen Sie die Ausführung fort, um festzustellen, ob im Debugger eine Meldung angezeigt wird, z. B. "MyFramework.framework", die nicht gefunden wurde. Wenn dies der Fall ist, folgen Sie dieser Diskussion: OS X Framework-Bibliothek nicht geladen: 'Bild nicht gefunden' Für mich hat diese Antwort funktioniert: https://stackoverflow.com/a/44796734/4060763

2) Stellen Sie sicher, dass Sie Ihre Binärdateien im Abschnitt "Binärdateien einbetten" hinzugefügt haben.

3) Stellen Sie sicher, dass Sie das Signieren von Frameworks in der Erstellungsphase aktiviert haben.

4) Stellen Sie sicher, dass die eingebetteten Frameworks keine Symlinks sind.

5) Sie können die verknüpften Frameworks optional machen, anstatt sie in der Phase "Binär mit Bibliotheken verknüpfen" zu benötigen. Dadurch wird iOS angewiesen, beim Start nicht nach diesen Frameworks zu suchen. Aber trotzdem müssen Sie die Fehler beheben, um diese Frameworks zu verwenden!

6) Überprüfen Sie, ob alle info.plist-Einträge in Ordnung sind. In meinem Fall habe ich eine Mac info.plist-Datei für iOS verwendet. Es wurde nach einer xib-Datei gesucht, die im iOS-Projekt nicht vorhanden war.

7) Reinigen und bauen Sie nach einer solchen Änderung. Dies ist erforderlich, da xcode diese Dateien nicht kopiert / ändert, wenn sie bereits vorhanden sind.

8) Entfernen Sie die App vom iPad und installieren Sie sie. Gleicher Grund wie 7.

coolVick
quelle
6

Das Deaktivieren von "Guard Malloc" in der Diagnose hat bei mir funktioniert. Einstellungen finden Sie unter Bild

Endlosschleife
quelle
2
Guard Malloc, richtig liegen. Weiß jemand, warum es den Absturz behebt?
Mojo66
1
Sie können auch versuchen, das Projekt zu bereinigen und dann erneut auszuführen oder Xcode neu zu starten. Diese Art von Fehlern ist nur ärgerlich und
ähnelt
5

Um die ursprüngliche Frage "Was kann ich tun, um weitere Informationen zu diesem Problem zu erhalten?" Zu beantworten, bietet dieser Apple-Forenthread einen sehr einfachen Tipp: Führen Sie einfach Ihre abstürzende App außerhalb von XCode aus (dh stoppen Sie sie von XCode aus und führen Sie sie dann manuell auf Ihrem aus Gerät). Dadurch wird ein Absturzprotokoll erstellt, das weitere Details zu den Ereignissen enthält. Sie können dieses Protokoll dann über das Menü XCode-Fenster / Geräte und Simulatoren -> Geräteprotokolle anzeigen überprüfen.

Fred
quelle
4

Ich hatte gerade die Anwendung der "Beschreibung der Privatsphäre - Kameranutzung" in der info.plist verpasst.

Ich weiß nicht, ob diese Informationen jemand anderem helfen ...

Linus
quelle
4

Ich hatte das gleiche Problem mit Xcode 11.3 und macOS Catalina 10.15.2. Die App lief gut auf dem Gerät, aber nicht auf Simulator. Es scheint, dass es ein Problem mit Simulator gibt und die Problemumgehung darin besteht, Thread Sanitizer zu deaktivieren.

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

Hoffe das hilft.

Pankaj Kulkarni
quelle
3

Ich habe einen Fehler mit derselben Signatur festgestellt (mein Projekt befand sich in Obj-C) und festgestellt, dass ich vergessen habe, eine Verknüpfung mit dem entsprechenden Framework herzustellen. Die Fehlermeldung im Debug-Protokoll, die zum Auffinden des Fehlers führte, lautete:

dyld: Symbol nicht gefunden: _OBJC_CLASS _ $ _ SFSafariViewController

Für meinen speziellen Fehler wurde das Problem durch Hinzufügen von SafariServices.framework unter Ziele -> Phasen erstellen -> "Binär mit Bibliotheken verknüpfen" behoben. Während Sie wahrscheinlich nicht denselben spezifischen Fehler und dieselbe Auflösung haben, ist es hilfreich, das Debug-Protokoll auf Hinweise zu überprüfen.

user1825506
quelle
2

Ich hatte diese Situation nach dem Update von Xcode auf Version 10.2.1 und schnell auf Version 5.0. Wenn Sie Karthago + RxSwift verwenden, verwendet das neue RxSwift RxRelay.framework. Sie sollten in Ihr Verzeichnis / Carthage / Build gehen, dieses Framework suchen und es in Ihr Projekt einbinden. Vergessen Sie nicht, es auch Ihrem carthage copy-frameworksSkript hinzuzufügen : $(SRCROOT)/Carthage/Build/iOS/RxRelay.framework

Gelöst dank: https://stackoverflow.com/a/52550148/2493555

milczi
quelle
1

Wenn Sie ein in Swift geschriebenes Framework in einer Objective-C-Anwendung verwenden, müssen Sie die Swift-Toolchain in die App aufnehmen, die das Framework verwendet.

Ich habe festgestellt, dass dies darin besteht, eine Dummy-Swift-Datei in der App zu erstellen, damit XCode Swift erkennt und sie dem Projekt entsprechend hinzufügt. Sie können dann die Dummy-Datei löschen.

Ich würde es lieben, wenn jemand einen besseren Weg wüsste, um einem Objective-C-Projekt explizit Swift hinzuzufügen, ohne eine Swift-Datei hinzuzufügen.

markw
quelle
1

Wenn Sie das Carthage Build Framework verwenden, sollten Sie es nach dem Ziehen in Ihr Projekt zu General / Embeded Binaries hinzufügen.

Antwortender
quelle
1

Ich finde den richtigen Weg, um es zu lösen.

Stellen Sie sicher, AppleWWDRCA.cerdass der Systemstandardmodus festgelegt ist, dann funktioniert es:

Geben Sie hier die Bildbeschreibung ein

Löwe
quelle
Hat auch für mich gearbeitet.
dev_shanghai
1

Ich stand vor dem gleichen Problem. Das Setzen von "Immer schnelle Standardbibliotheken einbetten" in den Build-Einstellungen meines Ziels auf "Ja" hat für mich funktioniert.

Arpit Panda
quelle
1

Ich hatte ein ähnliches Problem, das durch fehlende Berechtigungsspezifikation in plist behoben wurde (so seltsam es auch ist ..)

Ich habe versucht, AVCaptureDevice zu verwenden, und es ist beim Start abgestürzt (meine App war sehr minimal).

Hinzufügen - Privacy - Camera Usage Description um info.plistes für mich zu lösen.

Rock_Artist
quelle
1

Um die lange Liste der Begegnungen mit diesem Fehler zu erweitern, tritt dies auf, wenn ich XCode12.2 Beta 2 auf meinem Mac unter MacOS 10.15.5 mit dem auf MacOS 11.0 festgelegten Bereitstellungsziel bereitstelle. Diese Situation ist aufgetreten, weil ich die Mac Catalyst Tutorial-App beim Hinzufügen einer SideBar ausprobiert habe. Durch das Umschalten des Ziels auf MacOS 10.15.5 wurde der Fehler behoben und die App ordnungsgemäß gestartet.

Steve Harris
quelle
0

Ich habe meinen Fehler in meinem Projekt behoben.
1. Überprüfen Sie andere Threads, wenn ein Fehler aufgetreten ist. Ich habe festgestellt, dass mein Fehler die Kamera betrifft.

Geben Sie hier die Bildbeschreibung ein

  1. Fügen Sie den Datenschutz der Kamera in die Datei Info.plist ein.
    1) Öffnen Sie die Datei info.plist.
    2) Fügen Sie einen neuen Schlüssel mit dem Namen "Datenschutz - Beschreibung der Kameranutzung" hinzu und geben Sie eine Zeichenfolge ein, die beschreibt, warum die App eine Kamera benötigt. Die Beschreibung wird angezeigt, wenn Ihre App den Datenschutz verwenden muss.

Geben Sie hier die Bildbeschreibung ein

WangYang
quelle
0

Ich hatte gerade das gleiche Problem und der Grund dafür war die Tatsache, dass ich meine Entwicklerzertifikate nach einem neuen macOS Mojave-Update widerrufen und neue mit Xcode 10 erstellt habe (für einige wurden alle Anmeldeinformationen gelöscht und einige veraltet Schlüsselbundzertifikate).

Alles, was ich tun musste, war, die installierten Apps von meinem Gerät zu entfernen und sie erneut über Xcode auszuführen, damit das richtige neue Bereitstellungsprofil auf meinem Gerät installiert werden konnte :)

Frank Eno
quelle
0

Manchmal passiert es, wenn Sie System-Frameworks verwenden, auf die nur ab einer späteren iOS-Version als Ihrer Zielversion zugegriffen werden kann. Dies kann behoben werden, indem dieses verknüpfte Framework als optional markiert wird.

Beispielsweise stürzt ein Projekt, das auf iOS 11 ausgerichtet ist und die AutoFill-Funktion AuthenticationServices für iOS 12 verwendet, unter iOS 11 ab.

lazarevzubov
quelle
0

Eigentlich hatte ich das Problem mit 11.3.1 und Thread Sanitizer war bereits wie oben erwähnt ausgeschaltet. In meinem Fall hatte ich früher verschiedene xCode-Versionen in meinem Anwendungsordner

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

und

/Applications/Xcode.app - was 11.2

Ich brauche 2 Tage, um zu verstehen, dass das Build-System standardmäßig in der Datei /Applications/Xcode.app angezeigt wird. Wenn Sie also 11.3.1 in die Datei /Applications/Xcode.app bringen, können Sie das Problem endgültig beheben

d.rozumeenko
quelle
0

Wenn Sie benutzerdefinierte Frameworks verwenden, stellen Sie sicher, dass Sie den Mach-O-Typ auf statische Bibliothek setzen. Ich habe irgendwo gelesen, dass IOS Dylib nicht zulässt. Jedenfalls hat das bei mir funktioniert.

Michael Ribbons
quelle
0

Das gleiche Problem ist bei mir passiert. Ich hatte iOS 14 Beta und das Problem wurde behoben, als ich es auf die offizielle Version aktualisierte.

Dakata
quelle
-1

Ich habe dieses Problem nur beim Ausführen auf einem realen Gerät (iPhone SE) festgestellt. Am Simulator arbeitete das Projekt wie erwartet.

Ich habe alle Korrekturen aus diesem Thread und von hier aus versucht: OS X Framework Library nicht geladen: 'Image nicht gefunden' Keiner von denen hat für mich gearbeitet.

Für mich wurde das Problem nach dem Neustart des iPhone gelöst (sic!).

Ich tat:

  • sauberer Build-Ordner,
  • saubere abgeleitete Daten,
  • App vom Gerät löschen,
  • Gerät neustarten

Und es funktioniert endlich. :) :)

Wenn jede andere Lösung fehlschlägt, vergessen Sie nicht, sie auszuprobieren.

Vandermesis
quelle
-3

Ich habe es nach dem Befehl "pod install" sortiert.

Amandeep Singh
quelle