dyld: Bibliothek nicht geladen: @ rpath / libswiftCore.dylib / Bild nicht gefunden


76

Ich führe meine App von xcode auf mein iOS-Gerät aus und erhalte diesen und einen schwarzen Bildschirm auf einem iOS-Gerät.

Konsolentext:

dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/10DB2FE8-EF09-4857-B4AC-0DB2E4419D6F/App-Name.app/App-Name           
Reason: image not found        
(lldb)

Screenshot hinzugefügt


Welche Frameworks verwenden? Welches iOS läuft auf Ihrem Gerät?
Rückgabe wahr

@return true - iOS 8 Ich habe die folgenden Frameworks in meinem Spiel: UIKit, AdSupport, CoreGraphics, AudioToolbox, AVFoundation, CoreTelephony, MessageUI, SystemConfiguration, Accelerate, Foundation, SpriteKit. Schrieb sie alle auf: D
Stig Omdal


Ich hatte dieses Problem, nachdem ich auf einen neuen Mac gewechselt war. Die Ursache war ein fehlendes Apple WWDR-Zwischenzertifikat.
Morten Holmgaard

In einem realen Gerät habe ich ganze Wege getestet und keine Antwort erhalten, aber schließlich habe ich cocoaPod aus meinem Projekt entfernt und es erneut installiert, das Problem gelöst und meine App auf dem Gerät ausgeführt !! Dies ist die Antwort zum Entfernen von cocoaPod: stackoverflow.com/a/34765245/2201814
MHSFisher

Antworten:


89

Fügen Sie die folgende Zeile zu den Runpath-Suchpfaden Ihres Ziels hinzu.

@executable_path/Frameworks

your_target -> Build Settings -> Linking -> Runpath Search Paths


53
in meinen Runpath Search Paths habe ich dies bereits standardmäßig
SP Balu Kommuri

3
gelöst! Vielen Dank! Ich würde vorschlagen, das Projekt auch zu bereinigen:shift + cmd + k
Ric

In meinem Fall trat dieser Fehler auf, nachdem ich in einem anderen Zweig zusammengeführt hatte, in dem ich eine Heute-Erweiterung (Widget) erstellt hatte. Nach einem Zusammenführungskonflikt war der Laufpfad für mein zusammengeführtes Widget-Ziel irgendwie beschädigt und enthielt nicht den richtigen Laufpfad. Als ich vor dem Zusammenführen zum Widget zurücksprang, bemerkte ich, dass es diese zwei Runpfade hatte: @executable_path/Frameworks @executable_path/../../Frameworks(zusätzlich zu den $(CONFIGURATION_BUILD_DIR))
Sti

In meinem Fall habe ich zwei Ziele erstellt und eine Swift-Datei hinzugefügt, die eine Bridging-Header-Datei und einige Konfigurationen erstellt. Ich habe sie jedoch nur als Mitglied eines Ziels markiert. Das erste Ziel funktioniert ordnungsgemäß, das zweite jedoch nicht, und ich habe festgestellt, dass die Unterschiede in den Build-Einstellungen folgende sind: Runpath Search Paths -> $ (geerbt) und @ executeable_path / Frameworks. Außerdem musste ich auf Objective-C Bridging Header verweisen die zuvor erstellte Datei. Nach dem Hinzufügen dieser beiden Einstellungen begann das zweite Ziel ordnungsgemäß zu funktionieren.
Diego Carrera

50

Ich hatte das gleiche Problem. Am Ende habe ich das Framework an folgenden Stellen hinzugefügt:

  1. General > Embedded Binaries
  2. General > Linked Frameworks and Libraries
  3. Build Phases > Link Binaries with Libraries

Die eingebetteten Binärdateien schienen der Schlüssel für mich zu sein.


3
Eingebettete Binärdateien! Das schien der Schlüssel zu sein, der in vielen anderen Antworten fehlte, die hier für mich zu sehen waren
Bitwit

Dieses Problem trat beim Verweisen auf mein "SharedCode.framework" auf. Das Hinzufügen von .framework in der Anwendung Ziel> Allgemein> "Eingebettete Binärdateien" hat das Problem behoben.
Alphonse R. Dsouza

29

Für mich hilft das Hinzufügen @executable_path/Frameworksvon Runpath-Suchpfaden zum Projekt , nicht zum Ziel. Geben Sie hier die Bildbeschreibung ein your_project -> Build Settings -> Linking -> Runpath Search Paths


15

Keine der anderen Lösungen hat mir geholfen, aber alles wurde durch Löschen des Xcode- Verzeichnisses für abgeleitete Daten behoben .


Ja, das hat bei mir funktioniert. Bisher habe ich nur die abgeleiteten Daten für das jeweilige Projekt gelöscht, musste aber den abgeleiteten Datenordner von Xcode löschen. Vielen Dank.
Vikzilla

6
Wo sind die abgeleiteten Daten ?
JW.ZG

2
Das DerivedData-Verzeichnis finden Sie unter Xcode -> Einstellungen -> Standorte. Klicken Sie dann auf den Pfeil, um zum Verzeichnis zu gelangen
Caroline

13

Oh ja. Ich bin mit diesem Problem konfrontiert und habe Stunden mit der Lösung verbracht. Sie können versuchen, "Swift-Standardbibliotheken immer einbetten" unter "Build-Einstellungen"> "Build-Optionen" auf "Ja" zu setzen

dyld: Bibliothek nicht geladen: @ rpath / libswiftCore.dylib

(Vergessen Sie nicht, + cmd + K Ihr Projekt danach zu verschieben)


2
Vielen Dank, "(vergessen Sie nicht, + cmd + K Ihr Projekt nach zu verschieben)" Vorschlag funktioniert für mich :)
Saleh Enam Shohag

11

Ich musste "Eingebetteter Inhalt enthält Swift-Code" auf "Ja" ändern, damit meine Obj-C-App funktioniert, nachdem das eingebettete Obj-C-Framework mit einem Swift-Objekt aktualisiert wurde.


10

Gehen Sie im Framework-Ziel ( nicht im App-Ziel ) zu Build-Einstellungen> Build-Optionen> Standard-Swift-Bibliotheken immer in JA einbetten.

Dies löste das Problem für mich!


1
Funktioniert für mich, aber nachdem Sie Always Embed Standard Swift Libraries auf YES gesetzt haben. Ein sauberer Build ist erforderlich (Shift + cmd + K).
Saleh Enam Shohag

9

Ich hatte diesen Fehler in einem Befehlszeilenprojekt (Xcode 10.2 und macOS 10.14.3)

Die Lösung bestand darin, auf macOS 10.14.4 zu aktualisieren

Swift-Befehlszeilenprojekte können unter macOS 10.14.3 und früheren Versionen nur ausgeführt werden, wenn Sie das Paket Swift 5 Runtime Support for Command Line Tools installieren. Ohne dieses Paket stürzen Swift-Befehlszeilenprojekte beim Start mit den Fehlern "dyld: Bibliothek nicht geladen" ab. (46824656)

Aus Swift 5 Versionshinweisen für Xcode 10.2


Das hat es für mich behoben. Ohne den Dlyd-Fehler konnte nicht einmal eine Vanilla-Befehlszeilen-App ausgeführt werden.
Robert Joseph

Dies war auch die Lösung für mich. Ich bin auf diesen Fehler bei einem brandneuen Swift-Projekt (Hallo Welt) mit OS Version 10.14.3 gestoßen. Auf 10.14.4 aktualisiert und es hat funktioniert.
Ross Tajvar

7

In meinem Fall tritt dieses Problem im Objective-c-Projekt auf, in dem ich ein Swift-Framework (AirWatch SDK) verwende.

Lösungen: Ich habe dieses Problem mit Xcode 9.3 und 11.0.1 iOS wie folgt behoben:

  1. Ziehen Sie Ihr schnelles Framework per Drag & Drop in Ihr Projekt und verschieben Sie es in den Standard-Framework-Ordner Ihres Projekts.
  2. Fügen Sie sie dann wie im Screenshot gezeigt als eingebettete Binärdateien hinzu.
  3. Ändern Sie Ihren Framework-Status von " Erforderlich" in " Optional" (siehe Abbildung). (Phasen erstellen> Binär mit Bibliothek verknüpfen)

Geben Sie hier die Bildbeschreibung ein

  1. Setzen Sie in Ihren Build-Einstellungen die Option "Schnelle Standardbibliotheken immer einbetten" auf " Ja" .

  2. Legen Sie den Unterpfad fest und wählen Sie das Ziel als Framework für Ihr hinzugefügtes Framework unter Build-Phasen> Frameworks einbetten aus (siehe Abbildung). Geben Sie hier die Bildbeschreibung ein

Hoffe es wird jemandem helfen.


Wenn wir Framework als optional festlegen, sind die Framework-Klassen, auf die wir im Code zugreifen, gleich Null. Haben Sie eine Lösung dafür?
Vijay

Könnten Sie bitte sagen, wie Sie zu diesem AirWatch SDK gekommen sind? Ich habe Probleme damit. Hier ist meine Frage: stackoverflow.com/questions/53023149/…
Alex

Danke!, Dies ist die einzige Lösung, die für mich funktioniert hat! +1
Akdsouza

@akdsouza Gut zu hören :)
Aashish1aug

5

Ich habe das gleiche Problem festgestellt: Durch Festlegen der richtigen Codezeichenidentität wurde das Problem behoben (Build-Einstellungen-> Codezeichenzeichenidentität).

Gemäß Apple - technischen Fragen „Alle Unternehmen und Standard - iOS Entwickler - Zertifikate, die erstellt werden , nachdem iOS 8 veröffentlicht wurde haben das neue Team - ID - Feld an der richtigen Stelle zu Swift Sprache apps erlauben zu laufen“


5

Ich habe das Problem behoben, indem ich alles aus dem Xcode Derived Data-Verzeichnis gelöscht habe:

~ / Library / Developer / Xcode / DerivedData

Viel Glück euch allen!


3

Ich hatte die gleiche Fehlermeldung, so habe ich sie gelöst:

Das Problem ergab sich aus den von Xcode automatisch generierten Zertifikaten. Ich musste diese Zertifikate widerrufen, um sie von developer.apple.com zurück zu generieren

Die Lösung lautet dann: - Gehen Sie zu developer.apple.com / certificates -> Zertifikate widerrufen ODER gehen Sie zu Xcode> Einstellungen> Konten> Details anzeigen> Sigining-Identitäten auswählen> Clic-Einstellung whell> widerrufen - Gehen Sie zu developper.apple.com und Befolgen Sie die Anweisungen zum Generieren neuer Zertifikate - In Xcode in meinem Projekt: Gehen Sie zu Code Signing Identity und signieren Sie beide Debug-Zeilen mit dem generierten Zertifikat. - Beide Release-Zeilen sind auf "iOS Developer" gesetzt. - Dann project> clean - Build and run on device


3

@ Saikirans Antwort hat funktioniert.

Meine Zertifikate wurden vor der Veröffentlichung von iOS 8 erstellt. Ich habe alle meine Zertifikate widerrufen und alle Bereitstellungsprofile neu generiert, wodurch meine Probleme sofort gelöst wurden.

Ich habe nicht genug Ruf, um über die Antwort von @ Saikiran abzustimmen, aber das hat definitiv zur Lösung des Problems beigetragen.


3

Diese Fehlermeldung kann auch auftreten, wenn Sie ein Framework verwenden, das in einer anderen Swift-Version als der derzeit verwendeten erstellt wurde, z. B. wenn Sie Xcode aktualisieren.


Ich habe jedes mögliche Szenario ausprobiert, das überall diskutiert wurde, aber nichts scheint zu funktionieren. Ich bin mir sicher, dass das von mir verwendete Framework auf einer anderen Swift-Version basiert, aber ich bin mir nicht sicher, ob es das Problem ist. Ich werde versuchen, das Framework für eine neuere Version von Swift neu zu erstellen und den Status hier teilen.
Faran Rasheed

Ich denke, das war bei mir der Fall - ich habe Xcode 9.2 mit einem Framework verwendet, das Swift 4.1 verwendet und Xcode 9.3 benötigt.
Fenix ​​Voltres

2

Für mich hat sich die Option eingestellt

ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES

auf JA in Projekt -> Build-Einstellungen -> Build-Optionen

(Namirialer Rahmen durch Cocoapods)


2

Keine der oben genannten Lösungen hat bei mir funktioniert. Ich habe die Vertrauensstellungen für das iPhone Developer Certificate in Keychain geändert. Es sollte immer Vertrauen sein . Ändern Sie es in Systemstandards verwenden . Doppelklicken Sie auf das Zertifikat in Schlüssel die Option Bildschirm, von Entdeckt zu öffnen dieses Blog


Ändern, um Use System Defaultsdies auch für mich zu lösen.
Ngoan Nguyen

Meins war bereits "Use System Defaults" und funktioniert immer noch nicht
Stefan

1

Ich hatte die gleiche Fehlermeldung, so habe ich sie gelöst: Dies geschieht, weil ich die Bundle-ID geändert habe, also habe ich einfach die alte Bundle-ID eingegeben und es hat wieder funktioniert


1

Ich hatte die Runpath-Suchpfade bereits richtig eingestellt, aber es funktionierte immer noch nicht. Die Antwort von @Justin Domnitz brachte mich auf den richtigen Weg: Die Einstellung "Immer schnelle Standardbibliotheken einbetten" in den Build-Einstellungen meines Ziels auf "Ja" hat den Trick für mich getan.


1

Dieses Problem wurde anscheinend durch die Aufnahme der Swift-Datei in das benutzerdefinierte Objective-C-Framework verursacht. Auch unsicher, ob verwandt, aber mein App-Ziel wurde auch in Objective-C erstellt. Auch zum Simulator im Debug bauen. Noch nicht für die Veröffentlichung oder Archivierung überprüft.
Zusätzlich wurden die Einstellungen für die Runpfadsuche für das Projektziel auf "@ executeable_path / Frameworks" festgelegt. In den Zieleinstellungen für das Framework wurden sie auf "@ executeable_path / Frameworks" und "@ loader_path / Frameworks" festgelegt.

Nachdem ich versucht hatte, ein benutzerdefiniertes Framework neu zu erstellen und das App-Ziel erneut zuzuordnen, den abgeleiteten Datenordner und einige andere Vorschläge zu löschen, funktionierte es letztendlich für mich, die Build-Einstellung innerhalb des Projektziels für das benutzerdefinierte Framework-Projekt (nicht das App-Ziel) zu ändern: "Always Embed Swift Standardbibliotheken "bis" JA ". Es schien keine Rolle zu spielen, auf welche Einstellung das App-Ziel eingestellt war. Ich habe dies überprüft, indem ich den Simulator zurückgesetzt und neu erstellt habe. Dies ähnelt der Antwort von Daniele Ceglia, aber ich konnte keinen Kommentar hinzufügen und wollte mehr Klarheit schaffen.



1

Ich habe auch ein solches Problem. Alle anderen Möglichkeiten konnten mir nicht helfen, also habe ich es auf dumme Weise gemacht, ein neues Projekt und eine Pod-Installation von Grund auf neu erstellt und nachdem bestätigt wurde, dass es richtig funktioniert, habe ich alle Klassendateien und Storyboard-Dateien kopiert, endlich fertig ! Ich denke, es ist der letzte Weg, vielleicht könnte es dir helfen


1

Ich hatte ein ähnliches Problem in einem Objective-C-Projekt, in dem ich anfing, Swift-Dateien einzuschließen.

In meinem Fall habe ich im Hauptprojekt zwei Ziele erstellt und eine leere Swift-Datei hinzugefügt, die eine Bridging-Header-Datei und einige Konfigurationen erstellt, diese jedoch nur als Mitglied eines Ziels markiert. Das erste Ziel funktioniert ordnungsgemäß, das zweite jedoch nicht, und ich habe festgestellt, dass die Unterschiede in den Build-Einstellungen folgende sind:

Runpath-Suchpfade -> $(inherited)und@executable_path/Frameworks

Außerdem musste ich den Objective-C-Bridging-Header auf die zuvor erstellte Datei verweisen:

Objective-C Bridging Header -> pathTo/Target-Bridging-Header.h

Nach dem Hinzufügen dieser beiden Einstellungen begann das zweite Ziel ordnungsgemäß zu funktionieren.


1

Versuchen Sie, den Build-Ordner zu bereinigen. Ich hatte das gleiche Problem und habe es folgendermaßen gelöst: Produkt -> Build-Ordner bereinigen



0

Ich habe einige der oben genannten Fälle ausprobiert und es schien mein Problem nicht zu lösen. Ich benutze Git und Cocoapods für ein Projekt und der Fehler verschwand, sobald ich ein neues Commit machte.


0

Ich hatte dieses Problem zuvor in iPod touch iOS 9.3. Und ich habe alle in diesem Beitrag erwähnten Methoden angewendet , aber keine davon hat funktioniert. Ich habe meine Projekteinstellung überprüft. Und in der anderen Link-Flagge fand ich, dass ich hinzugefügt habe -Wl,-sectcreate,__RESTRICT,__restrict,/dev/null.

Dieses Flag verhindert das Einfügen von Dyld in das Telefon mit Jailbreak. Wenn ich dieses Flag lösche, kann die App erneut gestartet werden. Ich bin mir nicht sicher, warum es funktioniert hat. Weil ich in iPhone 10 iOS 10 diese Zeile nicht löschen muss. Aber es hat in iPod touch iOS 9.3 funktioniert. Überprüfen Sie also, ob Sie die gleiche Situation wie ich haben.


0

Bitte überprüfen Sie das * .framework, wenn ein _CodeSignature-Signatur-Framework-Verzeichnis vorhanden ist. Wenn kein _CodeSignature-Ordner vorhanden ist, navigieren Sie zu den Erstellungsphasen und klicken Sie auf +, um eine neue Kopierdateiphase hinzuzufügen und Kopierdateien zu erstellen. Verweisen Sie danach auf * .framework und wählen Sie Code Sign On Copy

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.