web-dev-qa-db-fra.com

dyld: la bibliothèque n'est pas chargée: @ rpath/libswiftCore.dylib

J'essaie de lancer une application Swift sur mon iPhone 4s. Cela fonctionne bien sur le simulateur, et mon ami peut réussir à l'exécuter sur son iPhone 4 J'ai iOS 8 et la version officielle de Xcode 6.

J'ai essayé 

  • Redémarrage de 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
  • Le contenu incorporé contient le code Swift est "Oui" 
  • Code Signing Identity est développeur

Ci-dessous 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
354
user3751185

Pour moi, aucune des solutions précédentes n'a fonctionné. Nous avons découvert qu'il existe un indicateur "Toujours incorporer les bibliothèques standard Swift" dans les paramètres de construction qui doit être défini sur OUI. C'était NON par défaut!

Build Settings > Always Embed Swift Standard Libraries

Après avoir défini cela, nettoyez le projet avant de le reconstruire.

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

définissez le paramètre de génération Swift Code (EMBEDDED_CONTENT_CONTAINS_Swift) contenant le contenu incorporé sur OUI dans votre application, comme indiqué dans la figure 2. Ce paramètre de construction, qui spécifie si le produit d'une cible contient du code Swift, indique à Xcode d'incorporer les bibliothèques standard Swift dans votre application lorsqu'il est réglé sur OUI.

enter image description here

Le drapeau s'appelait auparavant Embedded Content Contains Swift Code

511
TALAA

Curieusement, tout ce que je fis fut de "Nettoyer" mon projet (shift + cmd + K) et cela fonctionna. Vous semble-t-il lié au certificat?.

122
royherma

J'ai commencé à avoir cette erreur quand j'ai enlevé:

@executable_path/Frameworks

de Runpath Search Paths dans mes paramètres de construction. Le remplacer a tout corrigé (dieu merci pour le contrôle de source!)

Je ne sais pas comment cela s'est passé là-bas, mais il semble nécessaire qu'un binaire trouve son runtime Swift intégré.

93
jemmons

Pour le périphérique, vous devez également ajouter la structure dynamique à la section Embedded binaries de l'onglet General du projet.
 enter image description here

59
Mustafa

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

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

 enter image description here

52
Bonnie

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

  1. accédez au site Web des développeurs Apple sur lequel les certificats sont gérés: https://developer.Apple.com/account/ios/certificate/certificateList.action
  2. sélectionnez votre certificat (s) (qui devrait afficher "Géré par Xcode" sous "Statut") et "le révoquer"
  3. suivez les instructions 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. allez dans Xcode> Préférences> Comptes> [votre identifiant Apple]> double-cliquez sur le nom de votre équipe> cliquez sur le bouton d'actualisation pour mettre à jour les certificats et les profils d'approvisionnement.
27
Vijay Sundaram

OK, partage ici une autre cause de cette erreur. Il m'a fallu quelques heures pour résoudre ce problème.

Dans mon cas, la stratégie de confiance de mon certificat dans Keychain Access était Toujours faire confiance , le rétablir comme valeur par défaut a résolu le problème.

Pour ouvrir la fenêtre de configuration du certificat, double-cliquez sur le certificat dans la liste des certificats du trousseau.

enter image description hereenter image description here

25
NAlexN

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

$(inherited)
@executable_path/Frameworks
@loader_path/Frameworks
20
DonnaLea

Vous devez définir le Runpath Search Paths sur @executable_path/Frameworks comme indiqué dans la capture d'écran suivante de Paramètres de construction:

 enter image description here

Si vous avez des infrastructures intégrées créées dans Swift, vous pouvez définir sur YES l'option de génération Embedded Content Contains Swift Code.

16
loretoparisi

Je pense que Apple l’a déjà résumé sous L’application Swift se bloque lorsqu’elle tente de faire référence à la bibliothèque Swift libswiftCore.dylib

Cité de QA technique QA1886:

L'application Swift se bloque lorsque vous essayez de référencer la bibliothèque Swift libswiftCore.dylib.

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

R: Pour corriger ce problème, vous devrez signer votre application à l'aide du code signature de certificats avec l'unité d'organisation du sujet (OU) définie sur votre identifiant d'équipe. Tous les certificats de développeur Enterprise et standard iOS créés après la sortie d’iOS 8 ont le nouveau champ ID d’équipe au bon endroit pour permettre aux applications en langue Swift de s'exécuter.

Habituellement, cette erreur apparaît dans le journal de la console du périphérique 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 création d’une archive et d’un packaging votre application. Même si vous avez l'un des nouveaux certificats, il suffit de démissionner une archive d'applications Swift existante ne fonctionnera pas. Si elle a été construite avec un pré-iOS 8, vous devrez créer une autre archive.

Important: Veuillez faire preuve de prudence si vous devez révoquer et configurer un nouveau fichier Certificat de distribution d'entreprise. Si vous êtes une entreprise interne développeur, vous devrez faire attention à ne pas révoquer un certificat de distribution utilisé pour signer une application avec l’un de vos Les employés de l'entreprise utilisent toujours toutes les applications signées avec ce certificat de distribution d'entreprise cessera de fonctionner immédiatement. Ce qui précède s’applique uniquement à Enterprise Distribution certificats. Les certificats de développement peuvent être révoqués sans risque pour développeurs d'entreprise/standard iOS.

Comme les gars d'AirSign state , le problème provient de l'attribut manquant OU dans le champ subject du certificat In-House.

Subject: UID = 269J2W3P2L, CN = iPhone Distribution: Nom de l'entreprise, OU = 269J2W3P2L, O = Nom de l'entreprise, C = FR

J'ai un certificat de développement d'entreprise, en créer un nouveau a résolu le problème.

16
flatronka

Projetons P importe la bibliothèque personnalisée L, vous devez ensuite ajouter L dans 

P -> Build Phases -> Embed Frameworks -> +. Ça marche pour moi.

 enter image description here

10

J'avais le même problème après avoir déménagé sur un nouveau Mac et après toutes les heures, en essayant toutes les réponses suggérées dans les questions, rien de tout cela n'a fonctionné pour moi.

La solution pour moi consistait à installer ce certificat manquant . http://developer.Apple.com/certificationauthority/AppleWWDRCA.cer

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

7
Bruno Coelho

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

6
WhiteTiger

Modifier Ressources de modules de copie 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

Ce problème se reproduit dans Xcode 10.2 . Vous devez télécharger et installer le package suivant à partir d’Apple. Il fournit Swift 5 Runtime Support pour les outils de ligne de commande .

https://support.Apple.com/kb/DL1998?locale=en_US

5
Jim Bray

Après avoir tout essayé, j'ai finalement découvert que la construction ne semblait pas toujours inclure tous les détails encore et encore. Peut-être pour accélérer le processus .... Afin d’assurer un emballage ENTIÈRE avant d’utiliser un appareil, commencez par un nettoyage: Shift-Cmd-K . Ensuite, créez avec: Cmd-B . qui le lance sur votre appareil . Facile . Cordialement à vous tous, gentils gars à cet endroit!

5
Daniel

Pour moi, après avoir tout essayé sans succès, ce qui a bien fonctionné a été de supprimer le @executable_path/Frameworks du Packaging section (je ne sais pas comment il en est arrivé là)

 enter image description here

4
abinop

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

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

4

Aucune des solutions n'a fonctionné pour moi. Redémarrer le téléphone a résolu le problème. Etrange mais ça a marché. 

4
newDeveloper

aucune de ces solutions ne semblait fonctionner, mais lorsque j'ai remplacé Use System defaults par la permission du World Wide Developer cert, cela a fonctionné. J'ai inclus les étapes et les captures d'écran dans le lien ci-dessous 

Je vous encourage à enregistrer le ticket dans le rapport de bogue Apple, comme indiqué ici, car Apple devrait vraiment résoudre cette énorme erreur: https://stackoverflow.com/a/41401354/559760

3
Mobile Bloke

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

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

2
HG123

Il y a beaucoup de réponses à cela, mais peut-être que ma réponse aidera quelqu'un. 

J'ai le même problème, mon application fonctionne bien sur Simulator mais sur Device s'est écrasé lorsque je déjeune l'application et donne l'erreur ci-dessus. J'ai essayé toutes les réponses et solutions. Dans Mon cas, mon projet, je rencontre plusieurs cibles. J'ai créé la cible B en double à partir de la cible A. La cible B fonctionne correctement tant que la cible A s'est écrasée. J'utilise différents éléments d'image pour chaque cible. Après avoir cherché et fait google, j'ai trouvé quelque chose qui pourrait aider quelqu'un. 

Les applications cessent de planter lorsque je change de nom pour les éléments Lancer images pour les deux applications. Par exemple, cible A Nom de la ressource Image de lancement LaunchImage A. Cible B Déjeuner Nom de la ressource Image LaunchImage B et assigné correctement dans l'onglet Général de chaque cible. Mes applications fonctionnent bien.

2
VDPATEL

Ce message d'erreur peut également être provoqué lors de la mise à niveau de Xcode (et par la suite vers une nouvelle version de Swift) et que votre projet utilise un cadre créé/compilé avec une version antérieure/antérieure de Swift.

Dans ce cas, reconstruire le framework et l'ajouter va résoudre le problème.

2
Paul Popiel

La manière la plus facile et la plus facile d’ignorer: nettoyer et reconstruire.

Cela a résolu le problème après avoir essayé les réponses ci-dessus et n'a pas fonctionné.

2
Michael Yang

J'ai plusieurs versions de Xcode installées en même temps. Le cadre a été construit avec une version plus récente de Xcode. L'application que j'ai essayé de compiler était avec une ancienne version de Xcode. Lorsque j'ai nettoyé et compilé le framework et l'application avec la même version de Xcode, tout a fonctionné.

1
neoneye

J'utilise Xcode 8.3.3 et Xcode 9.2. La solution pour moi était de changer mon Xcode par défaut de 8 à 9 avec Xcode Select:

$ xcode-select --print-path

$ Sudo xcode-select -switch /Applications/Xcode-9.2.app

Edit: En fait, ce qui semblait aider ici était que Xcode 9.2 utilisait les données dérivées de Xcode 8.3.3. Ce n'est pas une solution, mais au moins cela me permet d'avancer dans mon travail.

1
Matt Bearson

J'utilise Xcode 7.2. Si vous avez essayé tout ce qui précède et que l'erreur persiste, essayez de supprimer l'ancien certificat de Keychain Access! C'est une telle douleur pour finalement résoudre ce problème.

0
Maggie

J'ai commencé à avoir cette erreur similaire pour tester l'ajout d'un fichier S3 à l'aide de services AWS. L'erreur ci-dessous était .dyld: la bibliothèque n'était pas chargée: @ rpath/AWSAutoScaling.framework/AWSAutoScaling

J'ai cherché beaucoup et les solutions ci-dessus ne sont également pas utiles pour moi. Le lien ci-dessous m'a aidé à résoudre ce problème.

https://forums.developer.Apple.com/thread/21292

Ce qui dit résoudre ce problème en re-téléchargeant le WWDR (Autorité de certification des relations de développeurs Apple Worldwide) .

0
chanduthedev

Si vous obtenez une erreur comme celle-ci:

Le lot "YourFrameworkTests" n'a pas pu être chargé car il contient des ressources endommagées ou manquantes. Essayez de réinstaller le paquet. (dlopen_preflight (/ some/path /.../ YourFrameworkTests.xctest/YourFrameworkTests): Bibliothèque non chargée: @ rpath/SomeOther.framework/SomeOther Référencé depuis:/some/path/...)

et utilisez CocoaPods dans votre framework, puis essayez d’éditer le Podfile et de supprimer inherit! :search_paths de la cible Test et exécutez pod install à nouveau.

Pour plus de détails, voir https://github.com/CocoaPods/CocoaPods/issues/8868 .

0
Marius

En bref, avez-vous essayé de cocher "Activer le bitcode = NON". Ça marche pour moi. 

Dans mon cas, mon projet a été écrit en Object-C et comprend un framework tiers écrit en Swift. Je peux exécuter mon APP sur le simulateur et sur le périphérique réel en mode développeur. Cependant, une fois que j’ai réalisé l’APP avec le profil de provision Ad-hoc et installé cette ipa OTA sur un périphérique réel, il s’est écrasé. Pas même mentionner télécharger au magasin. J'espère que cette information peut aider.

0
Tsung-Yi Tsai

Pour moi, construire une application Swift en ligne de commande MacOS qui dépendait de librairies Swift tierces (par exemple, SQLite), aucune des solutions ci-dessus ne semblait fonctionner. Ce qui a fonctionné a été d’ajouter directement le chemin suivant à mes chemins de recherche Runpath dans les paramètres de construction:

/Applications/Xcode.app/Contents//Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/macosx/

Ce faisant, un avertissement au moment de l'exécution signalait que Xcode avait trouvé 2 versions de libswiftCore - ce qui est logique. Sauf qu'en n'incluant pas cette ligne, Xcode n'a trouvé aucune version de libswiftCore.

Quoi qu'il en soit, ça ira pour moi même si cela ne semble pas correct - mon application est simplement un utilitaire que je n'ai pas l'intention de distribuer et au moins, elle s'exécute maintenant!

0
millionyearsold

Pour ajouter à la solution Cert de distribution Enterprise: vous pouvez ouvrir le trousseau et inspecter le cert. S'il y a du texte rouge indiquant que la chaîne de confiance ne peut pas être vérifiée ou qu'elle est révoquée, cela ne fonctionnera pas! Sur mon ordinateur, notre certificat de distribution indiquait la révocation même si le portail Web l’indiquait comme toujours valide. Nous avons reçu un nouveau certificat de distribution, vert (valide) dans Keychain, ce qui a résolu le problème.

0
r590

Je suis sur Xcode 8.3.2. Pour moi, le problème était que le certificat AppleWWDRCA était à la fois dans le système et le trousseau de connexion. Supprimé les deux et ensuite ajouté à la connexion simplement trousseau, maintenant il fonctionne à nouveau. 2 jours perdus ????

0
Max

Lorsque Xcode vous demande de réinitialiser les certificats, vous reset it. Et l'application peut être exécutée sur le périphérique réel sans provoquer de crash avec ces messages d'erreur. Une fois ce problème résolu dans un projet Swift. Les autres projets Swift présentant ce problème sont également corrigés. 

Je me suis battu pendant une demi-journée environ et j'ai constaté que réinitialiser les certificats encore et encore dans le portail de provisioning n'aidait pas. 

0
oOEric

Extrait du message de https://github.com/CocoaPods/cocoapods-integration-specs/pull/24/files , cela signifie que Swift.dylib doit signer mais a échoué. J'ai échoué, même créer un nouveau projet Swift avec support cocoapod. 

0
BollMose

J'ai le même problème, et le problème est le suivant:

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

Ma solution est ci-dessous:

Dans la TARGET -> Build Setting -> Other Linker Flag -> supprimez le cadre ReactiveCocoa. Si est xxx.framework, vous savez, vous devriez supprimer la xxx.

supprimer le ReactiveCocoa

 delete the ReactiveCocoa

0
aircraft

Dans mon cas, une de mes cibles de test fonctionnait mais l'autre ne l'était pas. C'était donner l'erreur ci-dessus avec une bibliothèque manquante ou autre. J'ai comparé les paramètres des deux cibles de test et découvert qu'une configuration manquait dans la configuration de "Test Host". Je l'ai donc copiée à partir de la cible de test opérationnelle et la correction de ma cible de test défectueuse!

 enter image description here

0
skr1p7k1dd

Dans mon cas,

J'ai mis @executable_path/Frameworks

Mais je dois aussi définir "chemins de recherche cadre"

$(PROJECT_DIR)/Frameworks

changer comme recursive

Ce qui fonctionne pour moi.

0
Max

Si votre projet comporte des cocoapodes et différents schémas, essayez d’exécuter la mise à jour du pod, cela m’arrange.

0
gmogames

Pour moi, la solution est ci-dessous Désactivez l'option "Incorporer des packs d'actifs dans un ensemble de produits".

 enter image description here

0
ashish.surana

Les solutions ci-dessus ne fonctionnaient pas pour moi. Je résous le problème en procédant comme suit:

  1. Je devais accéder au téléphone (Paramètres> Profil) et supprimer les profils Qui étaient dans le téléphone (y compris toutes les applications associées À ces profils/dispositions).
  2. Après cela, assurez-vous de télécharger les provisions Apple dans xcode. Accédez à Paramètres xcode> Et connectez-vous à votre compte de développeur Apple.
0
LuAndre