Ich erhalte diesen Fehler, nachdem ich einem alten Xcode-Projekt eine Swift-Klasse hinzugefügt habe.
dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib
Wie kann ich das Projekt wieder ausführen?
Ich erhalte diesen Fehler, nachdem ich einem alten Xcode-Projekt eine Swift-Klasse hinzugefügt habe.
dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib
Wie kann ich das Projekt wieder ausführen?
Antworten:
Bei mir hat keine der vorherigen Lösungen funktioniert. Wir haben festgestellt, dass ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
in den Build-Einstellungen ein Flag (in früheren Versionen: "Eingebetteter Inhalt enthält schnellen Code") vorhanden ist, das auf YES gesetzt werden muss. Es war standardmäßig NEIN!
Dieser Fehler kann auftreten, wenn bei der Konvertierung eines Objective-C-Projekts zur Verwendung von Swift ein Fehler aufgetreten ist. Das Problem ist, dass die Linker-Build-Einstellungen nie richtig konfiguriert wurden, sodass Sie dies von Hand tun müssen. Suchen Sie nach der Build-Einstellung Runpath Search Paths und setzen Sie sie auf:
$(inherited) @executable_path/Frameworks
EDIT: Ich sollte auch hinzufügen, dass es in letzter Zeit eine Flut dieser Fehler gegeben hat, die durch etwas ganz anderes verursacht wurden - Apple hat eine Änderung in Swift selbst vorgenommen, beginnend vielleicht mit Xcode 6.1 oder 6.1.1. Die einzige Lösung scheint darin zu bestehen, Xcode zu beenden, Ihre Zertifikate in Keychain Access zu zerstören, zum Mitgliedercenter zu gehen und alle Zertifikate und Profile (mit Ausnahme der Profile für Apps im Store - Sie können sie nicht löschen) zu löschen und dann das zu starten gesamter Zertifikatanforderungsprozess von Grund auf neu.
Ich bin mir nicht sicher, warum diese Frage abgelehnt wird. Ich hatte dieses Problem auch, als ich zum ersten Mal versuchte, Swift mit einem vorhandenen Projekt zu verwenden. Ein Xcode-Neustart hat dies auch für mich behoben.
Ich habe lange nach diesem Thema gesucht. Es gibt mehrere Gründe, die dieses Problem verursachen.
Wenn Sie mit Swift-Code / Bibliothek in einem Objectice C-Projekt konfrontiert sind, sollten Sie Lösung 1-2-3 ausprobieren
Wenn Sie mit einem neuen Problem konfrontiert sind, passt eine Swift-Projektlösung 4 am besten zu Ihnen.
Starten Sie Xcode neu, dann Computer und iPhone
Gehen Sie zu den Projekterstellungseinstellungen und setzen Sie das Always Embed Swift Standard Libraries
(vorherige Embedded Content Contains Swift Code
) Flag aufYES
Gehen Sie zu den Projekterstellungseinstellungen und fügen Sie @executable_path/Frameworks
die Runpath Search Paths
Option hinzu
Wenn keines der oben genannten Verfahren funktioniert, sollte dies der Fall sein. Apple scheint ein Ninja- Patch- Zertifikat zu sein, wie in AirSigns Post erwähnt
Bei InHouse-Zertifikaten
Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, O=Company Name, C=FR
Sie haben ein neues Feld mit dem Namen OU hinzugefügt
Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, OU=269J2W3P2L, O=Company Name, C=FR
Sie sollten also nur das Zertifikat und die Bereitstellung neu erstellen
@executable_path/../Frameworks
wo iOS-Projekte es ohne das ..
in der Mitte erfordern . Das Ändern dieses Werts ist wichtig, wenn Sie ein Ziel von einem Betriebssystem auf das andere konvertiert haben.
In meinem Fall habe ich versucht, ein benutzerdefiniertes Framework zu importieren, und es wurde ein ähnlicher Fehler angezeigt. Es stellte sich heraus, dass ich das Framework in die eingebetteten Binärdateien und nicht in die verknüpften Frameworks und Bibliotheken importieren musste.
Eingebettete Binärdateien finden Sie unter Projekteinstellungen -> -> Allgemein
Für Entwickler, die dieses Problem mit einer Adhoc / Enterprise-Distribution hatten,
Erstellen Sie das Produktionszertifikat aus dem Entwicklungsportal und generieren Sie das Verteilungsprofil neu. Laden Sie beide herunter und installieren Sie sie auf Ihrem Mac. Stellen Sie sicher, dass Sie in Ihren Xcode-Build-Einstellungen das richtige Profil ausgewählt und Ihre App neu erstellt haben.
Lösung 5:
In meinem Fall waren alle in der Antwort von accfews genannten Lösungen sehr hilfreich, aber keine hat funktioniert. Ich habe mein Problem gelöst, indem ich meine schnelle Bibliothek im Abschnitt "Eingebettete Binärdateien" im Abschnitt "Allgemein" des Ziels meines Projekts hinzugefügt habe. Vielleicht liegt das daran, dass ich mein schnelles Framework in meinen Arbeitsbereich aufgenommen habe? Was auch immer es jetzt kompiliert! Mach dich bereit Swift, ich bin hier!
Für mich war das Problem auf die Tatsache zurückzuführen, dass meine Apple Worldwide Developer Relations-Zertifizierungsstelle ungültig war.
Laden Sie es hier herunter: https://developer.apple.com/certificationauthority/AppleWWDRCA.cer
Ziehen Sie es per Drag & Drop in Keychain Access, bereinigen Sie das Projekt und führen Sie es aus.
Ich hatte ein Obj-C-Projekt, in dem ich anfing, schnelle Quelldateien hinzuzufügen. Folgendes hat das Problem für mich behoben:
RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
EMBEDDED CONTENT CONTAINS SWIFT = YES
Ich habe gerade ein neues Projekt aus den Vorlagen Xcode 6.3 erstellt und die Projekteinstellungen mit meinem alten Originalprojekt verglichen.
Versuchen Sie, die Alt-Taste gedrückt zu halten, und gehen Sie dann zu Produkt -> Build-Ordner bereinigen ...
Hoffe es wird jemandem helfen ..
Die Gründe dafür sind vielfältig. Nachdem ich gerade ein lustiges Wochenende damit verbracht hatte, ein weiteres Problem zu finden, das dies verursacht (die Reihenfolge der Codesignatur), wollte ich eine zusammenfassende Antwort erstellen, die alle möglichen Lösungen zusammenbringt:
DerivedData
und löschen Build
. Suchen Sie unter den Einstellungen nach dem Standort von DerivedData
. Build
sollte sich in Ihrem Projektordner befinden.@executable_path/Frameworks
. Das ist das einfache Zeug. Wenn Sie Ihre eigene Befehlszeile erstellen, erstellen Sie möglicherweise Ihre eigenen .ipa
Dateien zum Hochladen. In diesem Fall müssen Sie Folgendes sicherstellen:
SwiftSupport/iphoneos
mit der Version in identisch ist.Contents/YourApp.app/Frameworks
Da Swift zwischen den Versionen noch nicht binär kompatibel ist, müssen Sie sicherstellen, dass diese Versionen die sind, mit denen Sie Ihre App erstellt haben. Sie finden diese Bibliotheken unter /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
.codesign
die Bibliotheken und Framework-Dateien (unter Frameworks
im .app
Ordner) aufrufen und dann den gesamten .app
Baum signieren . Der .app
Baum muss mit einem, entitlements.plist
aber nicht mit den Frameworks signiert sein .Wenn Swift 3.0 herauskommt und wir Swift nicht mehr mit unseren Apps bündeln müssen, wird dieses ganze Problem hoffentlich verschwinden.
Ich hatte dieses Problem bei der Verwendung einer Ad-hoc- (oder Unternehmens-) Mobilprovision mit einem Produktionszertifikat. Der Wechsel zu einem Entwicklungszertifikat und Mobileprovision löste das Problem.
Mein Projekt ist ein Swift-Projekt mit einigen Objective-C-Klassen. Ich hatte das gleiche Problem, als ich mit dem alten inHouse (Enterprise) -Zertifikat signiert war.
Die folgenden Schritte haben dies für mich behoben.
Runpath Search Paths
Stellen Sie die Build-Einstellung auf : $(inherited) @executable_path/Frameworks
. Lösung 6:
In unserem Fall wurde das Enterprise Distribution Certificate widerrufen. Durch das Generieren eines neuen Zertifikats und das Aktualisieren des Bereitstellungsprofils wurde das Problem behoben.
(Es scheint viele verschiedene Ursachen für diesen Fehler zu geben. Ich hoffe, dies hilft jemandem.)
Ich habe das gleiche Problem festgestellt: Durch Festlegen der richtigen Codezeichenidentität wurde das Problem behoben (Build-Einstellungen-> Codezeichenzeichenidentität).
Gemäß Apple - technische Frage „Alle Unternehmen und Standard - Zertifikate iOS Entwickler , die erstellt werden , nachdem iOS 8 veröffentlicht wurde das neue Team - ID - Feld in der richtigen Stelle haben , damit Apps Swift Sprache ausführen“
Wenn Sie die drei Frameworks über eingebettete Binärdateien hinzufügen, werden sie auch verknüpften Frameworks und Bibliotheken hinzugefügt. Löschen Sie die drei Einträge in Linked Frameworks and Libraries , um das Problem zu lösen.
Magische Methoden wie das Neustarten von Xcode und der Neustart des Mac funktionieren bei mir nicht.
Hinzufügen eines Frameworks als "Embedded Binary" anstelle von "Linked Frameworks and Libraries" - Mein Problem wurde behoben.
Ich habe auch das Flag Embedded Content Contains Swift Code auf YES gesetzt.
Upgrade auf die neueste Version von OS X (Yosemite)
Nach stundenlangem Ausprobieren kam ich zur Lösung dieses Problems. - Wenn dies auf Ihren Fall zutrifft, natürlich.
Ich hatte das gleiche Problem, bis ich mein Mac OS X von Mavericks auf Yosemite aktualisiert habe. - Es hat mein Problem behoben, ich hoffe, es behebt auch Ihr Problem
Ich habe alle im Web gefundenen Lösungen ausprobiert, einschließlich Apple und neuer Zertifikate. Ohne Erfolg.
Die einzige Möglichkeit, xcode nach 6 Monaten auszuführen, bestand darin, ein neues Konto auf meinem MacBook zu erstellen.
Normalerweise verschwindet dieser Fehler, wenn Sie diese Bibliothek in Ihren Build-Phasen zum Segment "Dateien kopieren" hinzufügen.
Keine dieser Lösungen schien für mich konsequent zu funktionieren; Nach ein paar erfolgreichen Läufen würde es wieder fehlschlagen. Das Flag "Eingebetteter Inhalt enthält schnellen Code" wurde für mich immer auf JA gesetzt.
Es stellte sich heraus, dass ich Xcode auf 6.3-kompatibel eingestellt hatte. Das Zurücksetzen auf 3.2-kompatibel löste das Problem:
Ich hatte auch dieses Problem, nur dass es nicht gefunden wurde libswiftXCTest.dylib
.
Die Lösung bestand darin XCTest.framework
, dem Testziel in hinzuzufügen Build Phases/Link Binary with Library
. Ich habe diesen Fehler erhalten, obwohl ich versucht habe, das Hauptziel zu erstellen.
Dies zeigte sich, als ich einem alten Projekt ein neues Today-Erweiterungsziel mit Swift-Sprache hinzufügte. Einfach zu beheben, indem das Projekt auf die empfohlenen Einstellungen aktualisiert wurde. Xcode 6.0.1
Ich habe das gleiche Problem mit Mavericks, Xcode 6.1.1, beim Testen auf einem iPhone5 mit iOS 8.1.1. Ich habe alle möglichen Lösungen ausprobiert, einschließlich neuer Zertifikate und Bereitstellungsprofile, aber nichts hat geholfen. Ich habe die Änderungen Embedded Content Contains Swift Code
und Runpath Search Paths
sowohl auf Projektebene und Zielebene.
Ich habe jetzt Yosemite installiert und ohne weitere Änderungen begann es zu funktionieren.
Das gleiche Problem hier, für mich war es Crashlytics / Fabric / Beta / Twitter / Wie auch immer sie sich nennen, eine Binärdatei hochzuladen, bei der die eingebetteten Frameworks fehlten. Wenn ich ein Archiv erstellt und dann einen Enterprise-Build auf die übliche Weise exportiert habe, haben sie einen Reiz gewirkt.
Nach Monaten und Monaten, in denen ich alles hier ausprobiert habe ... Definition von Wahnsinn ... das Starten von Xcode unter einem neuen Mac-Benutzer hat es für mich gelöst.
Ich habe ~ / Library / Developer / * entfernt und Xcode neu installiert - also keine Ahnung, was ich sonst noch formatieren muss, damit es funktioniert.
otool