dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/Stylist.app/Stylist
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib: mmap() errno=1 validating first page of '/private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib'
(lldb)
Ich erhalte diesen Fehler, wenn ich auf meinem iPhone baue. Ich kann auf dem Simulator aufbauen. Ich habe alle meine Bereitstellungsdateien überarbeitet, kann jedoch immer noch nicht auf meinem iPhone aufbauen. Mein Xcode ist so
Ist dies ein Framework-Problem oder ein Signaturproblem? Dies ist in Xcode 6 nicht geschehen. Vielen Dank.
Antworten:
Ich habe dieses Problem schon einmal, weil ich mein Zertifikat versehentlich widerrufen habe. Dann haben alle meine schnellen Projekte dieses Problem. Es gibt zwei Möglichkeiten, dies zu lösen:
Klicken Sie auf Produkt → Reinigen (oder CMD+ Shift+ K)
Oder indem Sie die Xcode-Einstellungsdateien manuell bereinigen:
quelle
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.
Lösung 1 :
Starten Sie Xcode neu, dann Computer und iPhone
Lösung 2 :
Gehen Sie zu den Projekterstellungseinstellungen und setzen Sie das
Embedded Content Contains Swift
Code-Flag auf YESLösung 3:
Gehen Sie zu den Projekterstellungseinstellungen und fügen
@executable_path/Frameworks
Sie die Option Runpath Search Paths hinzuLösung 4:
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
Sie fügten ein neues Feld mit dem Namen hinzu
OU
Sie sollten also nur das Zertifikat und die Bereitstellung neu erstellen
quelle
Nachdem ich viele der anderen genannten Lösungen ausprobiert hatte, war es zu meiner ewigen Verlegenheit ein Xcode-> Produkt-> Reinigen und Neustarten von Xcode.
quelle
Für mich trat dieses Problem aufgrund des WWRD-Zertifikats auf - Meins war auf dem neuesten Stand, aber aus irgendeinem Grund wurde es auf "immer vertrauen" anstatt "Systemstandard verwenden" eingestellt, was anscheinend einen Unterschied macht.
quelle
Wenn Sie Ihren Schlüsselbund versehentlich zurücksetzen, kann dies an fehlenden Apple-Zertifikaten im Schlüsselbund liegen. Ich folgte der Antwort darauf , um mein Problem zu lösen.
quelle
Das Entfernen der abgeleiteten Daten hat den Trick für mich getan.
Haben Sie es über Xcode -> Einstellungen -> Standorte -> auf den Pfeil hinter dem DerivedData-Pfad geklickt und den gesamten DerivedData-Ordner im Finder entfernt.
quelle
Window > Projects > My Project > Derived Data > Delete
hat den Job für mich gemacht.Es trat auf meiner Seite auf, als ich eine App in der Befehlszeile über xcodebuild und xcrun PackageApplication erstellte und die App mit einem Unternehmensprofil signierte. Auf unseren CI-Build-Servern wurde das Zertifikat im Schlüsselbund auf "Immer vertrauen" gesetzt (Zertifikat auswählen -> Informationen abrufen -> Vertrauen -> "Systemstandard verwenden" kann in "Immer vertrauen" geändert werden). Ich musste es auf "System Standard verwenden" zurücksetzen, damit dies funktioniert. Zunächst setzen wir dies auf "Immer vertrauen", um die Schlüsselbunddialoge zu umgehen, die nach Software- und Zertifikataktualisierungen angezeigt werden.
quelle
Aufgrund des Risikos, mehr Verwirrung zu stiften, hatte ich dieses Problem beim Update auf XC8.
Keiner dieser Vorschläge oder irgendein anderer Thread hat es gelöst. Was funktioniert hat, war das Entfernen von ALLES aus der Erstellungsphase "Binär mit Bibliotheken verknüpfen", der Erstellungsphase "Zielabhängigkeiten" und der allgemeinen Einstellung "Verknüpfte Frameworks und Bibliotheken".
Zu Ihrer Information, ich verwende Karthago und habe
$(PROJECT_DIR)/Carthage/Build/tvOS
dieFRAMEWORK_SEARCH_PATHS
Build-Einstellung erweitert, damit meine Frameworks gefunden werden können.Zu Ihrer Information 2, dieses Projekt und die Frameworks sind 100% schnell und die Frameworks werden erstellt
DEFINES_MODULE = YES
.quelle
quelle
Zitiert aus technischen Fragen und Antworten QA1886 :
Die Swift-App stürzt ab, wenn versucht wird, auf die Swift-Bibliothek libswiftCore.dylib zu verweisen.
F: Was kann ich gegen den Ladefehler libswiftCore.dylib in der Konsole meines Geräts tun, der auftritt, wenn ich versuche, meine Swift-Sprach-App auszuführen?
A: Um dieses Problem zu beheben, müssen Sie Ihre App mit Codesignaturzertifikaten signieren, wobei die Organisationseinheit (Subject Organizational Unit, OU) auf Ihre Team-ID festgelegt ist. Alle Enterprise- und Standard-iOS-Entwicklerzertifikate, die nach der Veröffentlichung von iOS 8 erstellt wurden, verfügen über das neue Team-ID-Feld an der richtigen Stelle, damit Swift-Sprachanwendungen ausgeführt werden können.
Normalerweise wird dieser Fehler im Konsolenprotokoll des Geräts mit einer Meldung angezeigt, die einer der folgenden ähnelt: [....] [Zuweisen-MMAP] Zugeordnete Datei hat keine Team-ID und ist keine Plattform-Binärdatei: / private / var / mobile / Container / Bundle / Anwendung / 5D8FB2F7-1083-4564-94B2-0CB7DC75C9D1 / YourAppNameHere.app / Frameworks / libswiftCore.dylib
Die neuen Zertifikate werden benötigt, um ein Archiv zu erstellen und Ihre App zu verpacken. Selbst wenn Sie über eines der neuen Zertifikate verfügen, funktioniert es nicht, ein vorhandenes schnelles App-Archiv zu kündigen. Wenn es mit einem Zertifikat vor iOS 8 erstellt wurde, müssen Sie ein weiteres Archiv erstellen.
Wichtig: Seien Sie vorsichtig, wenn Sie ein neues Enterprise Distribution-Zertifikat widerrufen und einrichten müssen. Wenn Sie ein interner Enterprise-Entwickler sind, müssen Sie darauf achten, dass Sie kein Verteilungszertifikat widerrufen, das zum Signieren einer App verwendet wurde, die einer Ihrer Enterprise-Mitarbeiter noch als Apps verwendet, die mit diesem Enterprise-Verteilungszertifikat signiert wurden wird sofort aufhören zu arbeiten. Dies gilt nur für Enterprise Distribution-Zertifikate. Entwicklungszertifikate können für iOS-Entwickler von Unternehmen / Standards sicher widerrufen werden.
Wie die AirSign-Mitarbeiter angeben, wurzelt das Problem im fehlenden OU-Attribut im Betrefffeld des Inhouse-Zertifikats.
Betreff: UID = 269J2W3P2L, CN = iPhone Verteilung: Firmenname, OU = 269J2W3P2L, O = Firmenname, C = FR
Ich habe ein Unternehmensentwicklungszertifikat, das das Problem durch Erstellen eines neuen Zertifikats gelöst hat.
quelle
Sie haben wahrscheinlich nicht den richtigen Bogen in dieser Bibliothek, Sie können eine tun
file /private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib
und es sollte Ihnen die Bögen zeigen, die sich in dieser Bibliothek befinden ... Ich bin nicht sicher, wie Sie verknüpfen, aber es ist wahrscheinlich nicht der richtige Weg (wenn libswiftcore eine Factory-Bibliothek ist, wenn es sich um eine Add-On-Bibliothek handelt, dann ist es das auch wahrscheinlich nicht richtig kompiliert)
quelle
Ich hatte auch dieses Problem, aber nichts, was ich oben versucht habe und in mehreren anderen Posts funktioniert hat .. außer diesem.
Für mich habe ich die Bundle-ID geändert, da wir eine andere Bundle-ID für die Verteilung als für die Entwicklung haben.
Meine Hardware ist für diese Bestimmung zulässig und mein Teamkonto ist gültig, aber der oben genannte Fehler wurde in einem anderen Framework ausgelöst.
Es stellte sich heraus, dass ich die alte Version der App vollständig von meinem Telefon entfernen musste. Und nicht nur auf die übliche Weise zu löschen.
Lösung:
Offensichtlich gibt es bei der Installation derselben App unter demselben Team unter einer anderen Bundle-ID einige Hinweise auf Frameworks, die durcheinander geraten, wenn Sie nicht ganz von vorne anfangen.
Hoffe das hilft jemandem.
quelle
Ich habe gerade das Projekt und das
Clean Build Folder
Alt-Produktmenü bereinigtquelle
Die folgenden Schritte haben erfolgreich funktioniert.
1) In der dynamischen Bibliothek musste der Installationsname "@loader_path" sein.
2) Im Hauptprojekt muss der Runpath-Suchpfad "@loader_path" und "@ loader_path / Frameworks" sein.
3) In der Ansicht "Schlüsselbund verwendet" -> Abgelaufene Zertifikate anzeigen und alles entfernen.
4) Das Verteilungszertifikat gelöscht und neu installiert.
5) Entwickler.apple.com/certificationauthority/AppleWWDRCA.cer heruntergeladen und installiert.
quelle
Ich war kürzlich mit diesem Problem konfrontiert. Ich habe alle möglichen Lösungen ausprobiert, aber nichts hat funktioniert. Am Ende habe ich einfach den Xcode beendet, die Zertifikate im Schlüsselbund entfernt und alles frisch installiert und den Mac neu gestartet. Zum Glück hat es wie Charme geklappt :)
quelle
Ich hatte das gleiche Problem und konnte es beheben, indem ich das erneut herunterlud
WWDR (Apple Worldwide Developer Relations Certification Authority)
. Herunterladen von hier :und setzen Sie auf Immer Vertrauen in den Schlüsselbund. Wechseln zu
Use System Default
es funktioniert bei mir, ich hoffe das hilft dir
quelle
In meinem Fall zeigt der Schlüsselbund das Zertifikat als nicht vertrauenswürdig an. Um dieses Problem zu lösen, habe ich die Vertrauensoptionen des Zertifikats auf "Immer vertrauen" gesetzt. Das Setzen des Zertifikats auf "Immer vertrauen" war die Hauptursache für den Absturz. Ich konnte die Anwendung nicht auf dem Gerät installieren. Dies wurde behoben, indem die Vertrauensoption auf "Systemstandards" anstelle von "Immer vertrauen" gesetzt wurde. Es hat bei mir funktioniert.
quelle
Sie sehen dieselben Symptome, wenn Sie in Xamarin Studio arbeiten und auf eine tragbare Bibliothek verweisen, für die Sie den PCL-Köder und den Switch-Trick ausführen müssen. Dies tritt auf, wenn das referenzierende Projekt in Bezug auf die referenzierte Bibliothek veraltet ist. Ich stellte fest, dass ich meine gemeinsame Bibliothek auf ein neueres Framework aktualisiert, meine Pakete aktualisiert, aber meine iOS-Pakete nicht entsprechend aktualisiert hatte. Das Aktualisieren der Pakete hat diesen Fehler für mich behoben.
quelle
Möglicherweise erhalten Sie dieses Problem immer noch, nachdem Sie @Jieyi Hu Answer ausprobiert haben. Vielleicht scheint es behoben zu sein, aber wenn es wieder kommt (möglicherweise auf xCode 9).
Diese Problemumgehung scheint jedoch zu funktionieren (gilt für Cocoapods 1.5.x):
Öffnen Sie Podfile in Ihrem Projekt und fügen Sie Folgendes hinzu:
post_install do |installer| installer.pods_project.build_configurations.each do |config| config.build_settings.delete('CODE_SIGNING_ALLOWED') config.build_settings.delete('CODE_SIGNING_REQUIRED') end end
Pod Update
Quellen:
https://github.com/evgenyneu/Cosmos/issues/105
https://github.com/Skyscanner/SkyFloatingLabelTextField/issues/201#issuecomment-381915911
Vielen Dank an Cédric
quelle
Sie können Ihr Zertifikat neu generieren und Ihr iPhone neu starten.
Diese Arbeit für mich, ich hoffe das hilft dir.
quelle
Ich löse das Problem, indem ich meine lokalen Schlüsselanhänger überprüfe. Halten Sie login.keychain das richtige Zertifikat
quelle
Sie müssen für jedes dynamische Framework, das Sie (direkt oder indirekt) in Ihrem Projekt verknüpfen, ein Zertifikat (nur Zertifikat und kein Bereitstellungsprofil) festlegen
quelle
In meinem Fall, nachdem ich alle von Xcode erstellten und heruntergeladenen Zertifizierungen gelöscht habe. Lassen Sie xcode 8.1 die Zertifizierung der App verwalten. Es funktioniert gut !!! Hoffe das kann jemandem helfen.
quelle
Ich habe dieses Problem NUR im Simulator festgestellt. Es scheint mit einigen ungültigen Berechtigungen in unserer Anwendung zu tun zu haben, aber das Problem tritt nicht auf, wenn wir es auf einem Gerät ausführen.
quelle
Ich habe mit diesen Tricks gelöst.
Schritt 1:
Gehen Sie zu den Projekterstellungseinstellungen und fügen Sie der Option Runpath Search Paths die Option @ executeable_path / Frameworks hinzu
Schritt 2:
Gehen Sie zu den Ziel-Build-Einstellungen und fügen Sie @ executeable_path / Frameworks zur Option Runpath Search Paths und Framework Search Paths hinzu.
Schritt 3:
Erneutes Herunterladen des WWDR (Apple Worldwide Developer Relations-Zertifizierungsstelle), auf Systemoption als Option verwenden eingestellt.
Schritt 4:
Löschen Sie alle abgeleiteten Daten mit dem Terminal
rm -rf ~ / Bibliothek / Entwickler / Xcode / DerivedData / *
Schritt 5 :
Löschen Sie alle Zertifikate und installieren Sie sie erneut in Keychain. Ich habe die Option Systemstandard verwenden aktiviert.
Schritt 6:
Starten Sie Xcode neu.
quelle
stand vor dem gleichen Problem
quelle
Ich bin mit XCode 9 auf dieses Problem gestoßen. Nichts davon hat geklappt. Das hat den Trick für mich getan:
Project > Build Settings > Swift Compiler - Search Path: Setting "Import Paths"
zu$(PROJECT_DIR)
(rekursiv)quelle
Dies hat meinen Fehler behoben.
Erneutes Herunterladen des WWDR (Apple Worldwide Developer Relations-Zertifizierungsstelle), auf Systemoption als Option verwenden eingestellt.
quelle
In meinem Fall war es ein Problem mit einem der von mir verwendeten Pods. Am Ende habe ich diesen Pod entfernt und den Code manuell in mein Projekt eingefügt.
quelle
Geben Sie hier die Bildbeschreibung ein
Ich habe ein ähnliches Problem, das detaillierte Informationen wie das erste Bild enthält.
Meine Lösung ist, dass die Zertifizierung immer darauf vertraut, Systemstandards zu verwenden. genau wie: Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben
quelle