web-dev-qa-db-fra.com

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

Je reçois cette erreur après avoir ajouté une classe Swift à un ancien projet Xcode.

dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib

Comment puis-je relancer le projet?

195
Anton Holmquist

Pour moi, aucune des solutions précédentes n'a fonctionné. Nous avons découvert qu'il existe un indicateur ALWAYS_EMBED_Swift_STANDARD_LIBRARIES (dans les versions précédentes: "Le contenu incorporé contient du code Swift") dans les paramètres de construction, qui doit être défini sur YES. C'était NON par défaut!

148
mukaissi

Cette erreur peut se produire si quelque chose s'est mal passé lors de la conversion d'un projet Objective-C pour commencer à utiliser Swift. Le problème est que les paramètres de construction de l'éditeur de liens n'ont jamais été configurés correctement. Vous devrez donc le faire à la main. Recherchez le paramètre de construction Runpath Search Paths et définissez-le sur:

$(inherited) @executable_path/Frameworks

enter image description here

EDIT: Je dois également ajouter qu’il ya eu une vague récente d’erreurs causées par autre chose - Apple a modifié Swift lui-même, en commençant peut-être par Xcode 6.1 ou 6.1.1. La seule solution semble être de quitter Xcode, de détruire vos certificats dans Keychain Access, d’accéder au centre des membres et de supprimer tous les certificats et tous les profils processus de demande de certificat entier à partir de zéro.

91
matt

Je ne suis pas vraiment sûr de la raison pour laquelle cette question est soumise à un vote négatif. J'avais également ce problème lorsque j'ai d'abord essayé d'utiliser Swift avec un projet existant. Un redémarrage de Xcode a également corrigé cela pour moi.

79
Adam Fox

J'ai longtemps cherché sur cette question. Ce problème est dû à plusieurs raisons. 

Si vous faites face à Swift et à son code/bibliothèque dans un projet Objectice C, vous devriez essayer la solution 1-2-3.

Si vous faites face à ce problème avec un nouveau projet Swift, Solution 4 vous conviendra le mieux. 

Solution 1:

Redémarrez Xcode, puis l'ordinateur et l'iPhone

Solution 2:

Accédez aux paramètres de construction du projet et définissez l'indicateur Always Embed Swift Standard Libraries (précédemment Embedded Content Contains Swift Code) sur YES.

Solution 3:

Accédez aux paramètres de construction du projet et ajoutez l'option @executable_path/Frameworks à Runpath Search Paths.

Solution 4:

Si aucune des solutions ci-dessus ne fonctionne, cela devrait être. Apple semble être un certificat ninja avec les correctifs mentionnés dans Message d'AirSign

Certificats InHouse 

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

ils ont ajouté un nouveau champ nommé OU

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

vous devriez donc simplement recréer certificate et provision

54
accfews

Dans mon cas, j'essayais d'importer un cadre personnalisé et j'obtenais la même erreur ..__ Il s'est avéré que je devais importer le cadre dans les fichiers binaires incorporés plutôt que dans les cadres et les bibliothèques liés.

Les fichiers binaires incorporés se trouvent sous Paramètres du projet -> -> Général

39
c1pherB1t

Pour les développeurs qui ont eu ce problème avec une génération de distribution Adhoc/Enterprise, 

Créez le certificat de production à partir du portail dev, puis régénérez le profil de distribution. Téléchargez et installez les deux sur votre Mac. Assurez-vous d'avoir sélectionné le bon profil dans vos paramètres de construction Xcode et reconstruisez votre application.

Source: https://devforums.Apple.com/message/1022908#1022908

16
easthelper

Solution 5:

Dans mon cas, toutes les solutions mentionnées dans la réponse deaccfewsont été très utiles, mais aucune n’a fonctionné. J'ai résolu mon problème en ajoutant ma bibliothèque Swift dans la section "Binaires incorporés" de la section "Général" de la cible de mon projet. Peut-être est-ce dû au fait que j'ai inclus mon framework Swift dans mon espace de travail? Quoi qu'il compile maintenant! Préparez-vous vite, je suis là!

14
Christophe

Un simple redémarrage de Xcode a résolu le problème pour moi.

10
Anton Holmquist

Pour moi, le problème était dû au fait que mon autorité de certification des relations avec les développeurs Apple Worldwide n'était pas valide. 

Téléchargez-le ici: https://developer.Apple.com/certificationauthority/AppleWWDRCA.cer

Faites-le glisser dans l’accès au trousseau, nettoyez le projet et exécutez-le. 

5
Eric

Essayez de maintenir Alt, puis allez dans Produit -> Nettoyer le dossier de construction ...

J'espère que ça va aider quelqu'un ..

3
stakahop

Les raisons sont multiples. Après avoir passé un week-end amusant à trouver un autre problème (l'ordre de la signature de code), je voulais créer une réponse synthétique qui rassemble toutes les solutions possibles:

  1. Ajouter Contenu incorporé Contient le code Swift au projet. Vous devez définir cet indicateur si votre application contient du code Swift.
  2. Projet propre . En plus de Project> Clean, vous pouvez également supprimer les répertoires DerivedData et Build. Regardez sous Preferences pour localiser DerivedData. Build devrait être dans votre dossier de projet.
  3. Assurez-vous que Runpath Search Paths contient @executable_path/Frameworks
  4. Assurez-vous que votre certificat contient votre identifiant Apple Team dans le champ OU (unité d'organisation) Apple l'ajoute à votre place, révoquez simplement votre certificat de distribution existant et en créez un nouveau, téléchargez-le, installez-le sur KeyChain, régénérez tous les profils d'approvisionnement , téléchargez-les et reconstruisez-les.
  5. Xcode redémarre. Si tout est fondamentalement bon, mais Xcode n'y est pas encore arrivé.

C'est le truc facile. Si vous construisez votre propre ligne de commande, vous créez peut-être vos propres fichiers .ipa à télécharger. Dans ce cas, vous devez vous assurer que:

  1. Assurez-vous que la version des fichiers Swift dans SwiftSupport/iphoneos est la même que celle dans Contents/YourApp.app/Frameworks/ Swift n'étant pas encore compatible binaire, vous devez vous assurer que ces versions sont celles avec lesquelles vous avez construit votre application. Vous pouvez trouver ces bibliothèques sous /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/Swift/iphoneos.
  2. Signer les librairies et les frameworks first. Vous devez d'abord codesign les bibliothèques et les fichiers de structure (sous Frameworks dans le dossier .app), puis signez l'intégralité de l'arborescence .app. L'arbre .app doit être signé avec un entitlements.plist mais pas les frameworks.

Espérons que lorsque Swift 3.0 sortira et que nous n'aurons plus besoin de la fournir avec nos applications, tout ce problème disparaîtra.

3
jlyonsmith

J'ai essayé toutes les réponses données ci-dessus, rien n'a fonctionné.

Enfin travaillé après la mise à jour vers Yosemite

3
Prabu

J'ai eu un projet Obj-C où j'ai commencé à ajouter des fichiers source Swift . Ce qui suit a résolu le problème pour moi:

  1. Liaison: RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
  2. Compilateur Swift - Génération de code: EMBEDDED CONTENT CONTAINS Swift = YES

Je viens de créer un nouveau projet à partir des modèles Xcode 6.3 et de comparer les paramètres du projet avec mon ancien projet d'origine.

3
pinzoni

J'ai eu ce problème en utilisant une fourniture mobile ad hoc (ou entreprise) avec un certificat de production. Le passage à un certificat de développement et à mobileprovision a résolu le problème.

2
MacTeo

Si vous ajoutez les trois cadres via les fichiers binaires incorporés, ils seront également ajoutés aux cadres et bibliothèques liés. Supprimez les trois entrées dans Frameworks and Libraries résoudra le problème.

Les méthodes magiques telles que relancer Xcode et redémarrer le Mac ne fonctionnent pas sur moi.

2
Arbipher

Ajout de la structure en tant que "binaire incorporé" au lieu de "cadres et bibliothèques liés": résolution du problème.

J'ai également défini l'indicateur de contenu rapide contenant le code Swift sur OUI. 

2
Naveen Shan

Mon projet est un projet Swift avec des classes Objective-C ..___ J'ai eu le même problème lorsque j'ai signé avec l'ancien certificat inHouse (entreprise).

Les étapes suivantes ont corrigé cela pour moi.

  1. Créer et utiliser un nouveau certificat et une nouvelle offre mobile.
    (Réf. Blog d’AIRSIGN )
  2. Définissez le paramètre de construction Runpath Search Paths sur: $(inherited) @executable_path/Frameworks.
    (Réf. réponse de Matt )
2
jqgsninimo

J'ai rencontré le même problème, la définition de la bonne identité de signe de code a résolu le problème (Paramètres de construction-> Identité de signature de code).

Selon Question technique Apple "Tous les certificats de développeur Enterprise et iOS standard créés après la publication d'iOS 8 ont le nouveau champ ID de l'équipe à l'emplacement approprié pour permettre l'exécution d'applications de langue Swift"

2
Saikiran K

Solution 6:

Dans notre cas, le certificat de distribution d'entreprise avait été révoqué. La génération d'un nouveau certificat et la mise à jour du profil d'approvisionnement ont résolu le problème.

(Il semble y avoir de nombreuses causes différentes à cette erreur. J'espère que cela aidera quelqu'un.)

2
picciano

J'ai eu ce problème aussi, sauf qu'il n'a pas localisé libswiftXCTest.dylib

La solution consistait à ajouter XCTest.framework à la cible Tests, dans Build Phases/Link Binary with Library. J'avais cette erreur même quand j'essayais de construire la cible principale.

1
Lord Zsolt

Généralement, cette erreur disparaît si vous ajoutez cette bibliothèque au segment "Copier les fichiers" de vos phases de construction.

1
raphael_mav

J'ai essayé toutes les solutions trouvées sur le Web, y compris Apple et les nouveaux certificats. Sans succès.

Après 6 mois d’essai, le seul moyen de lancer xcode était de créer un nouveau compte sur mon macbook.

1
Eldervaz Vaz

Et si tout ce qui précède ne vous aide pas et que vous êtes vraiment frustré ... Essayez le meilleur tour de tous: Clean et juste pour être sûr aussi Clean Build Folder. :) J'espère que ça aide quelqu'un!

1
Georg

Mise à niveau vers la dernière version d'OS X (Yosemite)

Après des heures d’essais et d’erreur, j’ai réussi à résoudre ce problème .- Si cela s’applique bien sûr à votre cas.

J'ai eu le même problème jusqu'à ce que j'ai mis à niveau mon Mac OS X de Mavericks vers Yosemite .- Cela a résolu mon problème, j'espère que cela corrigera également le vôtre 

1
Actively Lazy

Aucune de ces solutions ne semblait fonctionner systématiquement pour moi; après chaque course réussie, cela échouerait à nouveau. L'indicateur "Le contenu incorporé contient du code Swift" a toujours été défini sur OUI pour moi.

Il s'avère que je définirais Xcode pour être compatible 6.3. Le changer pour qu'il soit compatible avec la version 3.2 l'a résolu:

1
brandonscript

J'ai le même problème. Ma solution consiste à déplacer chaque déclaration pod à l'intérieur de la clause target.

De: 

pod 'SomePod1'
pod 'SomePod2'
pod 'SomePod3'
target 'MyAwesomeApp', :exclusive => true do

end

À: 

target 'MyAwesomeApp', :exclusive => true do
    pod 'SomePod1'
    pod 'SomePod2'
    pod 'SomePod3'
end

Je suppose que si les déclarations de pod sont placées en dehors de la déclaration cible, CocoaPods (0.39.0) pourrait utiliser le mauvais xcconfig. 

Pods.debug.xcconfig (X

Pods-MyAwesomeApp.debug.xcconfig (O

0
Hai Feng Kao

J'ai ajouté SCLAlertView pod dans mon projet et plus tard je l'ai supprimé. Je n'ai pas supprimé import SCLAlertView de mon contrôleur de vue. Idéalement, il devrait donner une erreur de compilation, mais une erreur d’exécution mentionnant dyld: Library not loaded: @rpath/SCLAlertView.framework. J'ai enlevé import SCLAlertView de mon contrôleur de vue, je l'ai construit et il n'a pas donné l'erreur. Donc, dans mon cas, j’essayais de import une bibliothèque dont le framework n’était pas trouvé. La suppression de telles références résoudra votre problème.

0
Deepak Thakur

dans mon cas, je viens d'utiliser "Cmd + Maj + K" puis "Cmd + B" exécuter son travail

0
Shakeel Ahmed

Récemment commencé à obtenir cette erreur à nouveau. Alors que les 2 premières réponses me permettaient de le résoudre par le passé, aucune des réponses suggérées ne fonctionnait cette fois-ci. J'ai remarqué que l'erreur disait:

 Reason: no suitable image found.  Did find:
/private/var/mobile/Containers/Bundle/Application/8D8E5347-940A-4724-ACFE-33DF4C4DCB37/your.app/Frameworks/libswiftCore.dylib: mmap() errno=1 validating first page of '/private/var/mobile/Containers/Bundle/Application/8D8E5347-940A-4724-ACFE-33DF4C4DCB37/your.app/Frameworks/libswiftCore.dylib'

Alors j'ai essayé de supprimer l'application de l'appareil, et j'ai été capable de construire et d'exécuter à nouveau.

0

Couru dans ce problème après la mise à jour à Xcode 10.2 (Swift 5). Le lien Apple suivant présente deux options: https://support.Apple.com/kb/DL1998?locale=en_US

Pour moi, j'ai mis à jour le MacOS vers 10.14.4 (qui contient la bibliothèque Swift incluse dans le système d'exploitation). Sinon, "Téléchargez le support Swift 5 Runtime pour les outils de ligne de commande" pour les systèmes d'exploitation plus anciens.

0
anorskdev

En référence à https://forums.developer.Apple.com/thread/21292

Cette solution a fonctionné pour moi: 

Cela s'est produit de mon côté lors de la construction d'une application dans la ligne de commande via xcodebuild et xcrun PackageApplication, en signant l'application avec un profil d'entreprise. Sur nos serveurs de build CI, le certificat était défini pour "Toujours faire confiance" dans le trousseau (sélectionnez certificat -> Lire les informations -> Confiance -> "Utiliser les valeurs système par défaut" peut être remplacé par "Toujours faire confiance"). J'ai eu pour le remettre à "Utiliser les valeurs système par défaut" afin que cela fonctionne . Initialement, nous avons défini ceci sur "Toujours faire confiance" pour contourner le trousseau les boîtes de dialogue qui apparaissent après les mises à jour logicielles et les mises à jour des certificats.

0
Babul Prabhakar

Après des mois et des mois d'essayer tout ici ... Définition de la folie ... démarrer Xcode sous un nouvel utilisateur Mac l'a résolu pour moi. 

J'ai enlevé ~/Library/Developer/* et réinstallé Xcode, donc aucune idée de ce qu'il faut formater pour le faire fonctionner.

0
wcribbs

Cela s'est révélé lorsque j'ai ajouté une nouvelle cible d'extension Today avec la langue Swift à un ancien projet. Corrigé facilement en mettant à jour le projet avec les paramètres recommandés. Xcode 6.0.1

0
Vilém Kurz

Mon environnement: Cocos2d 2.0, Box2d, Objective C

En plus de répondre aux autres réponses ci-dessus, je suis finalement allé dans l'onglet Général et j'ai opté pour WatchKit.

 Targets:General:Linked Frameworks and Libraries: WatchKit.framework: Optional

0
Jim Rota

Même problème ici, pour moi, il s’agissait de Crashlytics/Fabric/Beta/Twitter /, peu importe ce qu’ils appellent, en téléchargeant un fichier binaire qui manquait des frameworks intégrés. Si je construisais une archive puis exportais une version Enterprise de la manière standard, cela fonctionnait parfaitement.

0
rob5408

J'ai eu le même problème avec Mavericks, Xcode 6.1.1, des tests sur un iPhone5 avec iOS 8.1.1. J'ai essayé toutes les solutions possibles, y compris les nouveaux certificats et les profils d'approvisionnement, mais rien n'y fait. J'ai apporté les modifications à Embedded Content Contains Swift Code et Runpath Search Paths à la fois au niveau du projet et au niveau de la cible. 

J'ai maintenant installé Yosemite, et sans autre changement, cela a commencé à fonctionner. 

0
patrik