web-dev-qa-db-fra.com

dyld: bibliothèque non chargée: @ rpath / libswiftCore.dylib / Image introuvable

J'exécute mon application depuis xcode sur mon appareil iOS et j'obtiens cela ainsi qu'un écran noir sur un appareil iOS.

Texte de la console:

dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/10DB2FE8-EF09-4857-B4AC-0DB2E4419D6F/App-Name.app/App-Name           
Reason: image not found        
(lldb)

Screenshot added

72
Stig Omdal

Essayez d’ajouter la ligne suivante à Chemins de recherche Runpath de votre cible.

@executable_path/Frameworks

your_target -> Paramètres de construction -> Liaison -> chemins de recherche de chemins d’attraction

87
Amro Shafie

J'ai eu le même problème. J'ai fini par ajouter le cadre dans les emplacements suivants:

  1. General > Embedded Binaries
  2. General > Linked Frameworks and Libraries
  3. Build Phases > Link Binaries with Libraries

Le binaires incorporés semblait être la clé pour moi.

44
zoruc

Pour moi, ça aide d'ajouter @executable_path/Frameworks à projet Runpath Search Paths, non target. enter image description here votre_projet -> Paramètres de construction -> Liaison -> Chemins de recherche Runpath

29
Vitaliy Gozhenko

Aucune des autres solutions ne m'a aidé, mais tout a été corrigé en supprimant le répertoire données dérivées de Xcode.

14
ex3ndr

Oh oui. J'ai fait face à ce problème en passant des heures à la solution. Vous pouvez essayer de définir "Toujours incorporer Swift") "sur" Oui "dans les paramètres de construction> Options de construction.

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

(n'oubliez pas de décaler + cmd + k après votre projet)

12
user2077469

Je devais passer de 'Contenu incorporé contenant Swift Code' à 'Oui') pour que mon application Obj-C fonctionne après la mise à jour de la structure intégrée Obj-C avec un Swift objet.

11
Justin Domnitz

Dans la cible du cadre (pas la cible de l'application), accédez à Paramètres de construction> Options de construction> Toujours incorporer la norme Swift Bibliothèques en YES.

Cela a résolu le problème pour moi!

8
Islam Magdy

J'ai eu cette erreur dans un projet en ligne de commande (Xcode 10.2 et macOS 10.14.3)

La solution consistait à mettre à jour macOS 10.14.4

Les projets de ligne de commande Swift ne seront pas exécutés sous macOS 10.14.3 et versions antérieures, sauf si vous installez le package Swift 5 Runtime Support pour les outils de ligne de commande. Sans ce package, les projets en ligne de commande Swift se bloquent au lancement avec des erreurs "dyld: Library not Load". (46824656)

De Notes de version de Swift 5 pour Xcode 10.2

7
Santa Claus

J'ai corrigé en supprimant tout du répertoire de données dérivées Xcode:

~/Library/Developer/Xcode/DerivedData

Bonne chance à tous!

5
Mihail Salari

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).

Conformément aux questions techniques Apple "Tous les certificats de développeur Enterprise et iOS standard créés après la sortie d'iOS 8 ont le nouveau champ ID de l'équipe à l'emplacement approprié. permettre à Swift applications linguistiques de s'exécuter "

5
Saikiran K

Dans mon cas, ce problème vient d'un projet Objective-c dans lequel j'utilise un cadre Swift (SDK AirWatch)).

Solutions: J'ai résolu ce problème avec Xcode 9.3 et 11.0.1 iOS comme indiqué ci-dessous:

  1. Glissez-déposez votre framework Swift dans votre projet et déplacez-vous dans le dossier Framework par défaut de votre projet.
  2. Ajoutez-les ensuite en tant que fichiers binaires incorporés, comme indiqué dans la capture d'écran.
  3. Modifiez le statut de votre structure de Obligatoire en Facultatif , comme indiqué dans la capture d'écran. (Build Phases> Lier le binaire avec la bibliothèque)

enter image description here

  1. Définissez Toujours intégrer Swift Bibliothèques standard à Oui dans vos paramètres de construction.

  2. Définissez Subpath et sélectionnez la destination comme Framework pour votre framework ajouté dans les phases de construction. > Intégrez les frameworks comme indiqué sur la capture d'écran. enter image description here

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

4
Aashish1aug

J'ai eu le même message d'erreur, voici comment je l'ai résolu:

Le problème provenait des certificats générés automatiquement par Xcode. Je devais révoquer ces certificats dans les générer de développeur.Apple.com

La solution est alors: - Allez sur developer.Apple.com/certificats -> Révoquer les certificats OR aller dans Xcode> préférences> comptes> Afficher les détails> sélectionner les identités de Sigining> cliquer sur les paramètres> révoquer - J'ai accédé à developper.Apple.com et suivez les instructions pour générer de nouveaux certificats - Dans Xcode dans mon projet: allez dans Code Signing Identity et signez les deux lignes de débogage avec le certificat généré - Les deux lignes de version sont définies sur "Développeur iOS" - Puis le projet > clean - Construit et fonctionne sur le périphérique

3
Etienne

Ce message d'erreur peut également se produire lors de l'utilisation d'une structure construite dans une version différente Swift alors celle actuellement utilisée, par exemple si vous mettez à niveau Xcode.

3
Paul Popiel

@ Saïkiran a répondu a travaillé.

Mes certificats ont été générés avant la sortie d’iOS 8. J'ai révoqué tous mes certificats et régénéré tous les profils d'approvisionnement, ce qui a immédiatement résolu mes problèmes.

Je n'ai pas assez de réputation pour voter @ la réponse de Saikiran, mais cela a certainement aidé à résoudre le problème.

3
BumMo Koo

Pour moi a travaillé définir l'option

ALWAYS_EMBED_Swift_STANDARD_LIBRARIES

oUI dans Projet -> Paramètres de construction -> Options de construction

(Cadre Namirial à travers les Cocoapods)

2
Daniele Ceglia

Aucune des solutions ci-dessus n'a fonctionné pour moi. J'ai modifié les paramètres de confiance du certificat de développeur iPhone dans Keychain. Il devrait être Toujours faire confiance . Changez-le en Utilisez les valeurs par défaut du système . Double-cliquez sur le certificat dans le trousseau pour ouvrir l'écran d'options Découvert que de this blog

2
Vinayak Parmar

J'ai eu le même message d'erreur, voici comment je l'ai résolu: cela se produit parce que j'ai changé l'identificateur de paquet, alors je viens de mettre l'ancien identifiant de paquet et il a recommencé à fonctionner

1
Bhadresh Sonani

Il semble que ce problème ait été causé par l'inclusion du fichier Swift dans le cadre personnalisé objective-c. Également incertain quant à la relation, mais ma cible d'application était également intégrée à objective-c. Construction également sur simulateur dans le débogage N'a pas encore vérifié la version ou la compilation de l'archive.
De plus, les paramètres de recherche de chemin d'accès pour la cible du projet étaient définis sur "@ chemin_exécutable/Frameworks". Dans les paramètres de cible du cadre, ils étaient définis sur: "@ chemin_exécutable/Frameworks" et "@ chemin_chargeur/Frameworks".

Après avoir essayé de reconstruire le framework personnalisé et de le rattacher à la cible de l'application, d'effacer le dossier de données dérivées et quelques autres suggestions, ce qui a finalement fonctionné pour moi a été de changer le paramètre de construction de la cible de projet pour le projet de framework personnalisé (pas la cible de l'application): "Toujours incorporer = Swift Bibliothèques standard "à" OUI ". Le réglage de la cible de l'application n'a pas d'importance. Je l'ai vérifié en réinitialisant le simulateur et en le reconstruisant. Ceci est similaire à la réponse de Daniele Ceglia mais je n'ai pas pu ajouter de commentaire et je voulais apporter plus de clarté.

1
Randoramma

J'ai eu un problème similaire dans un projet Objective-C où j'ai commencé à inclure des fichiers Swift.

Dans mon cas, j'ai créé deux cibles dans le projet principal et j'ai ajouté un fichier Swift vide), qui crée un fichier d'en-tête de pontage et certaines configurations, mais je ne l'ai marqué qu'en tant que membre d'un La première cible fonctionne correctement, mais pas la seconde, et j’ai remarqué que les différences entre les paramètres de construction étaient les suivantes:

Runpath Search Paths -> $(inherited) et @executable_path/Frameworks

Et je devais également faire référence à Objective-C Bridging Header au fichier créé auparavant:

En-tête de pontage Objective-C -> pathTo/Target-Bridging-Header.h

Après avoir ajouté ces deux paramètres, la deuxième cible a commencé à fonctionner correctement.

1
Diego Carrera

Essayez de nettoyer le dossier de construction, j'avais le même problème et je l'ai résolu de cette façon: Produit -> Nettoyer le dossier de construction

1
FarouK

Pour moi, le nettoyage du projet résout le problème!

1
Navid Einackchi

J'avais déjà les chemins de recherche Runpath définis correctement, mais cela ne fonctionnait toujours pas. La réponse de @Justin Domnitz m'a mise sur la bonne voie: la définition de "Toujours intégrer Swift Bibliothèques standard" ") sur Oui dans les paramètres de construction de ma cible a parfaitement fonctionné.

1
jkestner

J'ai un tel problème aussi. Tous les autres moyens ne pouvaient pas m'aider. Je l'ai donc fait de manière stupide. J'ai créé un nouveau projet et une installation de pod à partir de rien. Après m'être assuré qu'il fonctionnait correctement, j'ai copié tous les fichiers de classe et de storyboard, enfin terminé. ! Je pense que c'est le dernier moyen pour cela, peut-être pourrait-il vous aider

1
TheLastSummer

Pour moi, le simulateur de redémarrage a résolu ce problème.

0
Karen Hovhannisyan

Veuillez vérifier le fichier * .framework S'il existe un répertoire de structure de signature _CodeSignature. S'il n'y a pas de dossier _CodeSignature, accédez aux phases de construction, cliquez sur + pour ajouter une nouvelle phase de copie du fichier afin de créer des fichiers de copie. après cela, référence * .framework et choisissez Code Sign On Copy

0
曾繁荣

J'ai déjà eu ce problème dans iPod touch iOS 9.3. Et j'ai utilisé toutes les méthodes mentionnées dans ce post , mais aucune d'entre elles n'a fonctionné. J'ai vérifié les paramètres de mon projet. Et dans l'autre drapeau de lien, j'ai trouvé que j'avais ajouté -Wl,-sectcreate,__RESTRICT,__restrict,/dev/null.

Cet indicateur empêche dyld insérer dans le téléphone jailbreaké. Lorsque je supprime ce drapeau, l'application peut être relancée. Je ne sais pas pourquoi cela a fonctionné. Parce que dans l'iPhone se iOS 10, je n'ai pas à supprimer cette ligne. Mais cela a fonctionné dans iPod touch iOS 9.3. Alors, vérifiez si vous êtes dans la même situation que moi.

0
Dan Lee

J'ai essayé plusieurs des cas ci-dessus et cela n'a pas semblé résoudre mon problème. J'utilise git et cocoapods pour un projet, et l'erreur a disparu dès que j'ai effectué un nouveau commit.

0
Oliver S