Ich versuche eine Swift-App auf meinem iPhone 4s auszuführen. Es funktioniert gut auf dem Simulator, und mein Freund kann es erfolgreich auf seinem iPhone 4s ausführen. Ich habe iOS 8 und die offizielle Version von Xcode 6.
Ich habe versucht
$(inherited) @executable_path/Frameworks
Unten ist der Fehler in seiner Gesamtheit
dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/AppName
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/Frameworks/libswiftCore.dylib: mmap() error 1 at
address=0x008A1000, size=0x001A4000 segment=__TEXT in Segment::map() mapping
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/APPLICATION_NAME/Frameworks/libswiftCore.dylib
Für mich funktionierte keine der bisherigen Lösungen. Wir haben festgestellt, dass in den Build-Einstellungen das Flag "Always Swift Standard Libraries einbetten" vorhanden ist, das auf YES gesetzt werden muss. Es war standardmäßig NEIN!
Build Settings > Always Embed Swift Standard Libraries
Nachdem Sie diese Einstellung vorgenommen haben, reinigen Sie das Projekt, bevor Sie es erneut erstellen.
Für interessierte Leser eine Erklärung Der wichtigste Teil ist:
setzen Sie die Build-Einstellung Eingebetteter Inhalt enthält Swift-Code (EMBEDDED_CONTENT_CONTAINS_Swift) in Ihrer App auf YES (siehe Abbildung 2). Diese Build-Einstellung, die angibt, ob das Produkt eines Ziels über eingebetteten Inhalt mit Swift-Code verfügt, weist Xcode an, Swift-Standardbibliotheken in die App einzubetten wenn JA eingestellt ist.
Die Flagge hieß früher Embedded Content Contains Swift Code
Überraschenderweise war alles, was ich gemacht habe, "Clean" meines Projekts (shift + cmd + K) und es hat funktioniert. Hat scheinbar mit dem Zertifikat zu tun.
Ich habe diese Fehlermeldung erhalten, als ich entfernt wurde:
@executable_path/Frameworks
von Runpath Search Paths
in meinen Build-Einstellungen. Beim Ersetzen wurde alles wieder behoben (Gott sei Dank für die Quellcodeverwaltung!)
Ich weiß nicht, wie es dorthin gekommen ist, aber es scheint, dass eine Binärdatei die eingebettete Swift-Laufzeitumgebung finden muss.
Ich denke, es ist ein Fehler, wenn Zertifikate direkt aus Xcode generiert werden. So lösen Sie (zumindest in Xcode 6.1/6A1052d):
OK, wir teilen hier eine andere Ursache für diesen Fehler. Ich habe einige Stunden gebraucht, um das zu klären.
In meinem Fall lautete die Vertrauensrichtlinie meines Zertifikats in Keychain Access Always Trust . Durch das Zurücksetzen auf Standardwerte wurde das Problem behoben.
Um das Fenster mit den Zertifikatseinstellungen zu öffnen, doppelklicken Sie auf das Zertifikat in der Liste der Schlüsselzugriffszertifikate.
Ich hatte dieses Problem beim Ausführen meiner Swift-Tests (nicht jedoch meiner App). Es stellt sich heraus, dass der Test mehr als @executable_path/Frameworks
in seiner Runpath Search Paths
-Build-Einstellung für das Testziel enthalten musste. Das Festlegen der Runpath-Suchpfade auf Folgendes hat für mich einen Reiz ergeben:
$(inherited)
@executable_path/Frameworks
@loader_path/Frameworks
Ich denke, Apple hat es bereits unter Swift App zusammengefasst, wenn versucht wird, auf die Swift-Bibliothek libswiftCore.dylib zu verweisen .
Zitiert aus Technische Fragen und Antworten QA1886:
Die Swift-App stürzt ab, wenn versucht wird, auf die Swift-Bibliothek zu verweisen. libswiftCore.dylib.
F: Was kann ich mit dem Fehler libswiftCore.dylib in meinem .__ tun? Gerätekonsole, die passiert, wenn ich versuche, meine Swift-App auszuführen?
A: Um dieses Problem zu beheben, müssen Sie Ihre App mit Code .__ signieren. Signieren von Zertifikaten, wobei die Organisationseinheit Subject (OU) auf .__ gesetzt ist. Ihre Team ID Alle Enterprise- und Standard-iOS-Entwicklerzertifikate die nach der Veröffentlichung von iOS 8 erstellt wurden, haben 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 der Meldung .__ angezeigt. ähnlich einer der folgenden:
[....] [deny-mmap] mapped file has no team identifier and is not a platform binary:
/private/var/mobile/Containers/Bundle/Application/5D8FB2F7-1083-4564-94B2-0CB7DC75C9D1/YourAppNameHere.app/Frameworks/libswiftCore.dylib
Dyld Error Message:
Library not loaded: @rpath/libswiftCore.dylib
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x0000000120021088
Triggered by Thread: 0
Referenced from: /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/TestApp
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib: mmap() error 1 at address=0x1001D8000, size=0x00194000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib
Dyld Version: 353.5
Die neuen Zertifikate werden benötigt, wenn ein Archiv erstellt und verpackt wird Ihre App. Selbst wenn Sie eines der neuen Zertifikate besitzen, kündigen Sie einfach ein vorhandenes Swift-App-Archiv funktioniert nicht. Wenn es mit einem .__ erstellt wurde. Vor dem iOS 8-Zertifikat müssen Sie ein anderes Archiv erstellen.
Wichtig: Seien Sie vorsichtig, wenn Sie ein neues .__ widerrufen und einrichten müssen. Enterprise Distribution-Zertifikat Wenn Sie ein Inhouse-Unternehmen sind Entwickler müssen Sie darauf achten, dass Sie eine .__ nicht widerrufen. Verteilungszertifikat, das zum Signieren einer App in einem Ihrer .__ verwendet wurde. Mitarbeiter des Unternehmens verwenden weiterhin alle Apps, die mit .__ signiert wurden. Dieses Unternehmensverteilungszertifikat funktioniert nicht mehr sofort. Das Vorstehende gilt nur für Enterprise Distribution Zertifikate. Entwicklungszertifikate können für .__ sicher widerrufen werden. Enterprise/Standard-iOS-Entwickler.
Da die AirSign-Jungs state das Problem aus dem fehlenden Attribut ODER im Feld subject des In-House-Zertifikats ziehen.
Betreff: UID = 269J2W3P2L, CN = iPhone-Verteilung: Firmenname, OU = 269J2W3P2L, O = Firmenname, C = FR
Ich hatte das gleiche Problem, nachdem ich zu einem neuen Mac gewechselt hatte, und nach Stunden probierte ich alle vorgeschlagenen Antworten in den Fragen aus, nichts davon funktionierte für mich.
Die Lösung für mich war die Installation dieses fehlenden Zertifikats . http://developer.Apple.com/certificationauthority/AppleWWDRCA.cer
Hier finden Sie die Antwort . https://stackoverflow.com/a/14495100/976628
Ich löste mich durch Löschen der abgeleiteten Daten und dieses Mal funktionierte es korrekt. Versucht mit Xcode 7.3.1GM
Ändern Pod-Ressourcen kopieren für das Ziel aus:
"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-resources.sh"
zu:
"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-frameworks.sh"
Dieses Problem tritt erneut in Xcode 10.2 auf. Sie müssen das folgende Paket von Apple herunterladen und installieren. Es bietet Swift 5-Laufzeitunterstützung für Befehlszeilentools .
Nachdem ich alles ausprobiert hatte, stellte ich schließlich fest, dass der Build nicht immer wieder jedes Detail enthält. Möglicherweise beschleunigen Sie den Vorgang ... Um eine vollständige Verpackung zu gewährleisten, bevor Sie ein Gerät ausführen, müssen Sie zuerst eine Bereinigung durchführen: Shift-Cmd-K . Dann erstellen Sie mit Cmd-B ..__ das laufen lassen auf Ihrem Gerät . Einfach . Herzliche Grüße an alle Sie Nizza Jungs an diesem Ort!
In meinem Fall war es nur der Name meines Ziels:
Ich habe es so umbenannt: MyApp.something und das gleiche Problem ist erschienen ..... Aber ich sah im Build-Einstellungen-Fenster, dass mein Produktmodulname wie folgt geändert wurde MyApp-etwas .. Also entfernte ich den Punkt in meinem Zielnamen (MyAppSomething) und das Problem war weg.
Keine der Lösungen funktionierte für mich. Neustart des Telefons behoben. Seltsam, aber es hat funktioniert.
keine dieser Lösungen schien zu funktionieren, aber als ich die Erlaubnis des World Wide Developer Cert in Use System defaults
änderte, funktionierte es. Ich habe die Schritte und Screenshots in den Link unten eingefügt
Ich möchte Sie dazu ermutigen, das Ticket in dem hier genannten Apple-Fehlerbericht zu protokollieren, da Apple diesen massiven Fehler wirklich beheben sollte: https://stackoverflow.com/a/41401354/559760
Xcode 7.2, iOS 9.2 auf einem Gerät, 9.0 auf einem anderen Gerät. Beide hatten den Fehler. Keine Ahnung, was sich daran geändert hat, aber die oben genannten Lösungen für den WWDR waren für mich richtig. Installieren Sie das Zertifikat und das Problem gelöst.
https://forums.developer.Apple.com/message/43547https://forums.developer.Apple.com/message/84846
Es gibt viele Antworten, aber vielleicht hilft meine Antwort jemandem.
Ich habe dasselbe Problem. Meine App funktioniert gut mit dem Simulator, aber auf dem Gerät ist abgestürzt, wie ich die Lunches-App abbekomme, und gibt wie oben Fehler. Ich habe alle Antworten und Lösungen ausprobiert. In Mein Fall, Mein Projekt habe ich mehrere Ziele. Ich habe aus Ziel A ein doppeltes Ziel B erstellt. Ziel B funktioniert gut, während Ziel A abgestürzt ist. Ich verwende unterschiedliche Image-Assets für jedes Ziel. Nach dem Suchen und Durchführen von Google habe ich etwas gefunden, das jemandem helfen könnte.
Die App stürzt nicht mehr ab, wenn ich den Namen der Startbilder für beide Apps ändere. z. B. Ziel A Launch Image Asset-Name LaunchImage A. Target B Lunch Image Asset-Name LaunchImage B und ordnungsgemäß in der Registerkarte "Allgemein" jedes Ziels zugewiesen. Meine Apps funktionieren gut.
Diese Fehlermeldung kann auch beim Upgrade von Xcode (und danach auf eine neue Version von Swift) auftreten, und Ihr Projekt verwendet ein Framework, das mit einer älteren/früheren Swift-Version erstellt/kompiliert wurde.
In diesem Fall wird das Problem durch das erneute Erstellen des Frameworks und das erneute Hinzufügen behoben.
Die einfachste und leicht zu ignorierende Methode: Reinigen und Wiederherstellen.
Dies löste das Problem, nachdem die oben genannten Antworten ausprobiert und nicht funktioniert hatten.
Ich habe mehrere Versionen von Xcode gleichzeitig installiert. Das Framework wurde mit einer neueren Version von Xcode erstellt. Die App, die ich kompilieren wollte, war mit einer älteren Version von Xcode. Wenn ich das Framework und die App mit derselben Version von Xcode bereinigt und kompiliert habe, funktionierten die Dinge.
Ich verwende Xcode 8.3.3 und Xcode 9.2. Die Lösung für mich war, meinen Standard-Xcode mit Xcode Select von 8 auf 9 zu ändern:
$ xcode-select --print-path
$ Sudo xcode-select -switch /Applications/Xcode-9.2.app
Edit: Eigentlich schien hier zu helfen, dass Xcode 9.2 die von Xcode 8.3.3 abgeleiteten Daten verwendete. Keine Lösung, aber zumindest kann ich mit meiner Arbeit fortfahren.
Ich verwende Xcode 7.2. Wenn Sie alle oben genannten Schritte ausgeführt haben und der Fehler weiterhin auftritt, löschen Sie das alte Zertifikat aus Keychain Access! Es ist so ein Schmerz, dies endlich zu beheben.
Ich fing an, diesen ähnlichen Fehler beim Testen der S3-Datei mithilfe von AWS-Diensten zu erhalten. Unten war der Fehler .dyld: Bibliothek nicht geladen: @ rpath/AWSAutoScaling.framework/AWSAutoScaling
Ich habe viel gesucht und obige Lösungen sind für mich auch nicht hilfreich. Der folgende Link hat mir geholfen, dieses Problem zu lösen.
https://forums.developer.Apple.com/thread/21292
Welches besagt, um dieses Problem zu beheben, indem der WWDR (Apple Worldwide Developer Relations Certification Authority) neu heruntergeladen wird.
Wenn Sie einen Fehler wie diesen erhalten:
Das Bundle "YourFrameworkTests" konnte nicht geladen werden, da es beschädigt ist oder die erforderlichen Ressourcen fehlen. Versuchen Sie, das Bundle erneut zu installieren. (dlopen_preflight (/ some/path /.../ YourFrameworkTests.xctest/YourFrameworkTests): Bibliothek nicht geladen: @ rpath/SomeOther.framework/SomeOther Referenziert von:/some/path/...)
verwenden Sie CocoaPods in Ihrem Framework und versuchen Sie dann, Podfile
zu bearbeiten und inherit! :search_paths
vom Test
-Ziel zu entfernen , und führen Sie pod install
erneut aus.
Weitere Informationen finden Sie unter https://github.com/CocoaPods/CocoaPods/issues/8868 .
Haben Sie kurz versucht, "Enable Bitcode = NO" zu aktivieren. Für mich geht das.
In meinem Fall wurde mein Projekt in Object-C geschrieben und enthält ein Drittanbieter-Framework, das in Swift geschrieben wurde. Ich kann meine APP sowohl im Simulator als auch im realen Gerät im Entwicklermodus ausführen. Nachdem ich jedoch die APP mit dem Ad-hoc-Bereitstellungsprofil erreicht und diesen ipa-OTA auf einem realen Gerät installiert hatte, stürzte er ab. Erwähnen Sie nicht einmal den Upload in den Laden. Hoffen Sie, dass diese Informationen helfen können.
Für mich war das Erstellen einer Mac OS-Befehlszeile Swift-App, die von Swift-Bibliotheken von Drittanbietern (z. B. SQLite) abhängig war, keine der oben genannten Lösungen zu funktionieren. Was funktionierte, war das direkte Hinzufügen des folgenden Pfads zu meinen Runpath-Suchpfaden in den Build-Einstellungen:
/Applications/Xcode.app/Contents//Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/macosx/
Dabei wurde zur Laufzeit eine Warnung ausgegeben, dass Xcode 2 Versionen von libswiftCore gefunden hat - was sinnvoll ist. Außer dass diese Zeile nicht eingeschlossen wurde, konnte Xcode keine libswiftCore-Versionen finden.
Jedenfalls ist das für mich eine gute Wahl, auch wenn es nicht richtig erscheint - meine App ist nur ein Dienstprogramm, das ich nicht verteilen möchte, und zumindest läuft es jetzt!
So fügen Sie die Enterprise-Vertriebs-Zertifizierungslösung hinzu: Sie können Keychain öffnen und das Zertifizierungsprogramm überprüfen. Wenn es einen roten Text gibt, der besagt, dass die Vertrauenskette nicht überprüft werden kann oder es widerrufen wird, funktioniert es NICHT! Auf meinem Computer wurde unser Distributionszertifikat als widerrufen angezeigt, obwohl es im Webportal als noch gültig angezeigt wurde. Wir haben ein neues Distributionszertifikat erhalten, das in Keychain grün (gültig) war, und dieses Problem wurde behoben.
Ich bin auf Xcode 8.3.2. Für mich war das Problem das AppleWWDRCA-Zertifikat sowohl im System- als auch im Anmelde-Schlüsselbund. Beides entfernt und nur zum Anmeldenamen hinzugefügt, jetzt läuft es wieder einwandfrei. 2 Tage verloren ????
Wenn Sie von Xcode aufgefordert werden, Zertifikate zurückzusetzen, setzen Sie reset it. Mit diesen Fehlermeldungen kann die App ohne Absturz auf dem tatsächlichen Gerät ausgeführt werden. Sobald dieses Problem in einem Swift-Projekt behoben ist. Andere Swift-Projekte mit diesem Problem wurden ebenfalls behoben.
Ich habe mich einen halben Tag lang darum gekämpft und fand, dass Reset-Zertifikate im Provisioning-Portal immer wieder helfen.
Aus dem Beitrag von https://github.com/CocoaPods/cocoapods-integration-specs/pull/24/files bedeutet dies, dass das Zeichen "Swift.dylib" ein Zeichen hat, aber nicht erfolgreich war. Ich habe nicht einmal ein neues Swift-Projekt mit Cocoapod-Unterstützung erstellt.
Ich habe das gleiche Problem, und das Problem ist wie folgt:
dyld: Library not loaded: @rpath/Result.framework/Result Referenced from: /private/var/mobile/Containers/Bundle/Application/74AD1FE2-7095-47D2-B059-520863050EE2/ReactiveCocoaTest.app/Frameworks/ReactiveCocoa.framework/ReactiveCocoa Reason: image not found
Meine Lösung ist unten:
In TARGET
-> Build Setting
-> Other Linker Flag
-> löschen Sie das ReactiveCocoa
-Framework. Wenn xxx.framework
ist, sollten Sie die xxx
löschen.
löschen Sie den ReactiveCocoa
In meinem Fall funktionierte eines meiner Testziele, das andere jedoch nicht. Es gab den obigen Fehler mit einer fehlenden Bibliothek oder was auch immer. Ich habe die Einstellungen für beide Testziele verglichen und festgestellt, dass bei "Test Host" die Konfiguration fehlte. Ich kopierte das also vom funktionierenden Testziel und fixierte mein defektes Testziel!
In meinem Fall,
Ich habe @executable_path/Frameworks
eingestellt
Aber ich muss auch "Framework-Suchpfade" einstellen
$(PROJECT_DIR)/Frameworks
ändern als recursive
Was für mich funktioniert.
Wenn Ihr Projekt über Cocoapoden und andere Schemata verfügt, versuchen Sie, das Pod-Update auszuführen. Das hat es für mich behoben.
Die obigen Lösungen haben für mich nicht funktioniert. Ich behebe das Problem mit den folgenden Schritten: