dyld: Bibliothèque non chargée: @rpath / libswiftCore.dylib

j'essaie d'exécuter une application Swift sur mon iPhone 4s. Il fonctionne très bien sur le simulateur, et mon ami peut l'exécuter avec succès sur son iPhone 4s. J'ai iOS 8 et la version officielle de Xcode 6.

j'ai essayé

  • redémarrer Xcode, iPhone, ordinateur
  • nettoyage et reconstruction
  • révocation et création d'un nouveau profil de certificat / provision
  • Runpath Search Paths est $(inherited) @executable_path/Frameworks
  • contenu incorporé contenant le Code Swift est "oui"
  • Signature du Code de l'Identité est le développeur

ci-dessous est l'erreur dans son intégralité

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
336
demandé sur Bartłomiej Semańczyk 2014-09-24 22:40:24

30 réponses

Pour moi, aucune des solutions précédentes travaillé. Nous avons découvert qu'il y a un indicateur" bibliothèques standards Swift toujours intégrées " dans les paramètres de construction qui doit être positionné à Oui. C'était PAS par défaut!

Build Settings > Always Embed Swift Standard Libraries

après avoir mis ceci, nettoyer le projet avant de construire à nouveau.

Pour les gros lecteurs quelques explications La partie la plus importante est:

définir le contenu intégré contient le Code Swift (EMBEDDED_CONTENT_CONTAINS_SWIFT). Ce paramètre de construction, qui spécifie si le produit d'une cible contient du contenu incorporé avec du code Swift, indique à Xcode d'intégrer les bibliothèques standards Swift dans votre application lorsqu'il est défini à YES.

enter image description here

le drapeau était anciennement appelé Embedded Content Contains Swift Code

482
répondu TALAA 2018-04-05 22:43:50

étonnamment, tout ce que j'ai fait était "nettoyer" mon projet (shift+cmd+K) et cela a fonctionné. Ne semble être liée au certificat cependant.

108
répondu royherma 2015-12-31 07:31:25

j'ai commencé à recevoir cette erreur quand j'ai enlevé:

@executable_path/Frameworks

à partir de Runpath Search Paths dans mes paramètres de construction. Le remplacer a tout réparé à nouveau (Dieu merci pour le contrôle des sources!)

Je ne sais pas comment il est arrivé là, mais il semble être nécessaire pour un binaire pour trouver son exécution Swift intégrée.

90
répondu jemmons 2014-12-11 22:08:40

pour l'appareil, vous devez également ajouter le cadre dynamique à la section Embedded binaries dans l'onglet General du projet.

enter image description here

55
répondu Mustafa 2018-06-17 14:18:33

dans le Xcode 8, l'option Embedded Content Contains Swift Code n'est plus disponible.

il a été renommé en "Always Embed Swift Standard Libraries = YES"

enter image description here

48
répondu Bonnie 2018-04-06 22:09:15

je pense que c'est un bug quand les certificats sont générés directement à partir de Xcode. Pour résoudre (au moins dans le Xcode 6.1 / 6A1052d):

  1. allez sur le site de Apple Developer où les certificats sont gérés: https://developer.apple.com/account/ios/certificate/certificateList.action
  2. sélectionnez votre(s) certificat (s) (qui devraient afficher "géré par Xcode" sous "statut") et" révoquer "it
  3. suivre instructions ici pour générer manuellement un nouveau certificat: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html#//apple_ref/doc/uid/TP40012582-CH31-SW32
  4. aller à Xcode > Préférences > Comptes > [votre IDENTIFIANT Apple] > double-cliquez sur le nom de votre équipe > frapper le bouton actualiser pour mettre à jour les certificats et des profils de configuration
27
répondu Vijay Sundaram 2014-12-05 23:16:52

OK, partager ici une autre cause de cette erreur. Ça m'a pris quelques heures pour régler ça.

dans mon cas , la Politique de confiance de mon certificat dans L'accès au porte-clés était Toujours Confiance , en le changeant en retour par défaut résolu le problème.

pour ouvrir la fenêtre des paramètres de certificat, double-cliquez sur le certificat dans la liste D'accès aux clés des certificats.

enter image description here enter image description here

25
répondu NAlexN 2015-05-15 05:39:47

j'avais ce problème avec l'exécution de mes tests Swift (mais pas mon application). Il s'avère que le test avait besoin d'avoir plus de @executable_path/Frameworks dans son Runpath Search Paths paramètre de construction pour la cible de test. Mettre les chemins de recherche de Runpath à ce qui suit a fonctionné un charme pour moi:

$(inherited)
@executable_path/Frameworks
@loader_path/Frameworks
20
répondu DonnaLea 2015-07-30 20:59:27

je pense Qu'Apple l'a déjà résumé sous L'application Swift s'écrase en essayant de faire référence à la bibliothèque Swift libswiftCore.dylib

Cité de Q&A technique QA1886 :

L'application Swift s'écrase en essayant de faire référence à la bibliothèque Swift libswiftCore.dylib.

Q: Que puis-je faire à propos du libswiftCore.erreur de chargement de dylib dans mon la console de l'appareil qui se produit lorsque j'essaie d'exécuter mon application de langage Swift?

A: pour corriger ce problème, vous aurez besoin de signer votre application en utilisant le code signer des certificats avec L'unité organisationnelle (UO) visée à votre Équipe d'ID. Tous les certificats de développeur iOS standard et D'entreprise qui sont créés après iOS 8 a été libéré ont le nouveau champ D'identification de L'équipe au bon endroit pour permettre aux applications de langage Swift de fonctionner.

habituellement, cette erreur apparaît dans le journal de la console avec un message semblable à l'un des suivants:

[....] [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

les nouveaux certificats sont nécessaires lors de la construction d'une archive et d'un emballage votre application. Même si vous avez l'un des nouveaux certificats, juste démissionnaire une archive existante de l'application swift ne fonctionnera pas. Si elle a été construite avec un pré-iOS 8 certificat, vous aurez besoin de construire une autre archive.

Important: s'il Vous Plaît utiliser la prudence si vous avez besoin de révoquer et l'installation d'un nouveau Certificat de Distribution d'entreprise. Si vous êtes une entreprise interne développeur, vous devez être prudent que vous n'avez pas révoquer un certificat de distribution qui a été utilisé pour signer une application de l'un de vos Les employés de l'entreprise utilisent toujours les applications qui ont été signées avec ce certificat de distribution d'entreprise cessera de fonctionner immédiatement. Ce qui précède ne s'applique qu'à la Distribution par les entreprises certificat. Les certs de développement peuvent être révoqués sans risque pour entreprises / Développeurs iOS standard.

Comme le AirSign gars état le problème des racines manquantes OU attribut dans la sujet champ de la In-House "certificat de 151970920" .

Subject: UID=269J2W3P2L, CN= iPhone Distribution: Company Name, OU=269J2W3P2L , O = Company Name, C =FR

j'ai un le développement de l'entreprise certificat, la création d'un nouveau résolu le problème.

16
répondu flatronka 2015-10-24 13:37:34

vous devez définir le Runpath Search Paths à @executable_path/Frameworks comme indiqué dans la capture d'écran suivante des paramètres de construction:

enter image description here

si vous avez des cadres intégrés fabriqués dans Swift, que vous pouvez définir à YES les options de construction Embedded Content Contains Swift Code .

14
répondu loretoparisi 2016-01-19 17:31:42

le projet P importe la bibliothèque personnalisée L, alors vous devez ajouter L dans

P -> Build Phases -> Embed Frameworks -> + . Qui fonctionne pour moi.

enter image description here

10
répondu Sazzad Hissain Khan 2016-04-19 05:17:08

j'avais le même problème après être passé à un nouveau mac, et après les heures de travail, en essayant toutes les réponses suggérées dans les questions, rien de tout cela ne fonctionnait pour moi.

la solution pour moi était d'installer ce certificat manquant. http://developer.apple.com/certificationauthority/AppleWWDRCA.cer

a trouvé la réponse ici. https://stackoverflow.com/a/14495100/976628

7
répondu Bruno Coelho 2017-05-23 11:47:25

Changement Copie Gousses Ressources pour la cible à partir de:

"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-resources.sh"

à:

"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-frameworks.sh"
6
répondu Bartłomiej Semańczyk 2015-11-25 07:58:00

j'ai résolu en supprimant les données dérivées et cette fois, il a fonctionné correctement. Essayé avec Xcode 7.3.1 GM

6
répondu WhiteTiger 2016-05-25 21:08:36

Dans mon cas, c'était juste le nom de ma cible :

Je l'ai renommé comme ceci: MyApp.quelque chose et le même numéro est apparu. Mais j'ai vu dans la fenêtre des paramètres de construction, le nom de mon module produit a été modifié comme ceci MyApp-something . Ainsi, j'ai enlevé le point dans mon nom de cible ( MyAppSomething ) et le problème a disparu.

4
répondu Patrice From 8Beats 2015-04-21 03:35:33

pour moi, après avoir tout essayé sans succès, ce qui a fonctionné était de supprimer @executable_path/Frameworks du Packaging section (Je ne sais pas comment il est venu là en premier lieu)

enter image description here

4
répondu abinop 2015-08-21 12:00:54

après avoir tout essayé, j'ai finalement découvert, que la construction ne semble pas toujours inclure tous les détails encore et encore. Peut-être pour accélérer le processus... Afin d'assurer un emballage complet avant de rouler sur un appareil, faire un premier nettoyage: Shift-Cmd-K. Puis construisez avec: Cmd-B. Après que l'exécuter sur votre appareil. Facile. Salutations à vous tous, sympa les gars!

4
répondu Daniel 2015-11-11 13:20:01

Aucune des solutions n'a fonctionné pour moi. Le redémarrage du téléphone fixe. Étrange, mais il a travaillé.

4
répondu newDeveloper 2015-12-02 00:52:22

aucune de ces solutions ne semblait fonctionner mais quand j'ai changé la permission du World Wide Developer cert en Use System defaults alors il a fonctionné. J'ai inclus les étapes et les captures d'écran dans le lien ci-dessous

je vous encourage à enregistrer le billet dans le rapport de bogue apple comme mentionné ici comme Apple devrait vraiment résoudre cette erreur massive: https://stackoverflow.com/a/41401354/559760

3
répondu Mobile Bloke 2017-05-23 12:10:41

Xcode 7.2, iOS 9.2 sur un appareil, 9.0 sur un autre. Tous deux avaient l'erreur. Aucune idée de ce qui a changé qui l'a provoqué, mais les solutions ci-dessus pour le WWDR étaient correctes pour moi. Installez ce certificat et le problème est résolu.

https://forums.developer.apple.com/message/43547 https://forums.developer.apple.com/message/84846

2
répondu HG123 2015-12-30 03:54:08

Il y a beaucoup de réponses, mais peut-être que ma réponse vous aidera certains.

j'ai le même problème, mon application fonctionne très bien sur simulateur mais sur le dispositif s'est écrasé que je déjeune app et donne l'erreur comme ci-dessus. J'ai essayé toutes les réponses et solutions . Dans mon cas, mon projet j'ai plusieurs cibles .J'ai créé un double de la cible B de la cible A. La Cible B fonctionne bien alors que la cible a s'est écrasée. J'utilise des images différentes pour chaque cible. Après chercher et faire google j'ai trouvé quelque chose qui pourrait aider à quelqu'un.

App stop de la plante lorsque je change le nom de Lancer des images de l'actif pour les deux applications . E. G cible une image de lancement nom de l'élément D'actif LaunchImage A. Cible B Déjeuner Image de l'actif nom LaunchImage B et correctement attribué dans l'Onglet Général de chaque cible . Mes applications marchent très bien.

2
répondu VDPATEL 2017-01-17 11:46:21

j'ai plusieurs versions de Xcode installées en même temps. Le framework a été construit avec une nouvelle version de Xcode. L'application que j'ai essayé de compiler était avec une ancienne version de Xcode. Quand j'ai nettoyé et compilé à la fois le framework et l'application avec la même version de Xcode puis les choses ont fonctionné.

1
répondu neoneye 2016-04-26 08:10:29

ce message d'erreur peut également être causé lors de la mise à niveau de Xcode (et par la suite vers une nouvelle version de Swift) et votre projet utilise un framework construit/compilé avec une version plus ancienne/précédente de Swift.

dans ce cas, reconstruire le cadre et le rajouter de nouveau réglera le problème.

1
répondu Paul Popiel 2017-09-28 07:12:03

j'utilise Xcode 8.3.3 et Xcode 9.2. La solution pour moi était de passer mon Xcode par défaut de 8 à 9 en utilisant xcode Select:

$ xcode-select --print-chemin

$ sudo xcode-select-interrupteur /Applications/Xcode-9.2.app

Edit: en fait ce qui a semblé aider ici était que Xcode 9.2 utilisé les données dérivées de Xcode 8.3.3. Pas une solution, mais au moins ça me permet d'avancer dans mon travail.

1
répondu Matt Bearson 2018-01-24 18:12:25

pour ajouter à la solution Enterprise distribution cert: vous pouvez ouvrir le porte-clés et inspecter le cert. S'il y a un texte rouge disant que la chaîne de confiance ne peut pas être vérifiée ou qu'elle est révoquée, il ne fonctionnera pas! Sur mon ordinateur, Notre certificat de distribution était considéré comme révoqué même si le portail web le montrait comme toujours valide. Nous avons obtenu un nouveau cert de distribution, qui était Vert (valide) en porte-clés, et cela a résolu le problème.

0
répondu r590 2015-10-06 18:37:29

les solutions ci-dessus ne fonctionnaient pas pour moi. J'ai corrigé le problème en suivant les étapes suivantes:

  1. j'ai dû aller au téléphone (Paramètres > Profil) et supprimer le profils qui étaient dans le téléphone(y compris toutes les applications associées avec ces profile/provisions).
  2. Après cela, assurez-vous que vous téléchargez les dispositions apple dans xcode. Allez à Paramètres de xcode > compte et connectez-vous à votre compte développeur apple.
0
répondu LuAndre 2015-11-15 19:22:17

j'utilise le Xcode 7.2. Si vous avez essayé tout ce qui précède et de l'erreur persiste, essayez de supprimer l'ancien certificat de Trousseau d'Accès! C'est une douleur pour enfin résoudre ce problème.

0
répondu Maggie 2016-01-12 23:15:35

dans mon cas,

j'ai mis @executable_path/Frameworks

mais je dois aussi définir "Framework search paths"

$(PROJECT_DIR)/Frameworks

changer pour recursive

qui marche pour moi.

0
répondu Max 2016-01-13 12:05:53

quand Xcode vous demande de réinitialiser certs, vous réinitialiser il. Et l'application peut être lancée sur le périphérique réel sans se planter avec ces messages d'erreur. Une fois ce problème résolu dans un projet swift. D'autres projets swift avec ce problème sont également résolus.

j'ai lutté pour ces environ une demi-journée et j'ai trouvé que Réinitialiser certs encore et encore dans le portail d'approvisionnement n'aide pas.

0
répondu oOEric 2016-02-23 07:27:43

dans mon cas, l'une de mes cibles de test fonctionnait mais l'autre ne fonctionnait pas. Il donnait l'erreur ci-dessus avec une bibliothèque manquante ou quoi que ce soit. J'ai comparé les paramètres pour les deux cibles de test et j'ai trouvé qu'il manquait la configuration pour "Test Host", donc j'ai copié ça de la cible de test en cours et ça a corrigé ma cible de test cassée!

enter image description here

0
répondu skr1p7k1dd 2016-05-13 17:20:26