program application iOS avec cadre s'est brisé sur le périphérique, dyld: Bibliothèque non chargée, Xcode 6 bêta




xcode beta (15)

Dans l'onglet Général de la cible, il y a un champ Embedded Binaries . Lorsque vous ajoutez le cadre, le problème est résolu.

La référence est here sur Apple Developer Forums.

Ce blocage a été un problème de blocage, j'ai essentiellement utilisé les étapes suivantes pour reproduire le problème:

  • Créer un projet Cocoa Touch Framework
  • Ajouter un fichier rapide et un chien de classe
  • Construire un cadre pour l'appareil
  • Créer une application Single View dans Swift
  • Importer le cadre dans le projet d'application
  • Instancier une classe rapide à partir du framework dans ViewController
  • Créer et exécuter une application sur l'appareil

L'application s'est immédiatement écrasée au lancement, voici le journal de la console:

dyld: Library not loaded: @rpath/FrameworkTest03.framework/FrameworkTest03
  Referenced from: /var/mobile/Applications/FA6BAAC8-1AAD-49B4-8326-F30F66458CB6/FrameworkTest03App.app/FrameworkTest03App
  Reason: image not found

J'ai essayé de construire sur les appareils iOS 7.1 et 8.0, ils ont tous les deux le même accident. Cependant je peux construire l'application et courir sur le simulateur bien. Aussi je suis conscient que je peux changer le cadre de Obligatoire à Facultatif dans Link Binary With Libraries , mais cela n'a pas complètement résolu le problème, l'application s'est plantée quand j'ai créé une instance de Dog . Le comportement est différent sur l'appareil et le simulateur, je suppose que nous ne pouvons pas distribuer de cadre pour les appareils utilisant la version bêta de Xcode. Quelqu'un peut-il faire la lumière sur cette question?


Au cas où quelqu'un rencontrerait toujours ce problème, en dépit de suivre toutes les étapes décrites dans les nombreuses autres réponses, vous devrez peut-être révoquer et recréer votre certificat de signature de code , comme suit:

https://developer.apple.com/library/ios/qa/qa1886/_index.html


J'ai créé un framework en utilisant Swift3 / Xcode 8.1 et le consommait dans un projet Objective-C / Xcode 8.1. Pour résoudre ce problème, j'ai dû activer l'option Always Embed Swift Standard Libraries sous Build Options .

Jetez un oeil à cette capture d'écran:

J'espère que cela pourra aider!



Tout d'abord, essayez de construire après la commande + Option + Maj + K. Si échoue toujours, puis faire les étapes ci-dessous.

Si quelqu'un est confronté à cette erreur dans Xcode 8, changez votre statut de structure en Optional au lieu de Required sous l'onglet General de votre cible.


Étonnamment, toutes les pièces nécessaires ne sont pas documentées ici, au moins pour Xcode 8.

Mon cas était un cadre construit sur mesure faisant partie du même espace de travail. Il s'avère qu'il a été construit incorrectement. Basé sur la dernière réponse de jeremyhu à ce sujet:

https://forums.developer.apple.com/thread/4687

J'ai dû définir la Dynamic Library Install Name Base ( DYLIB_INSTALL_NAME_BASE ) sous Build Settings de Build Settings de l' DYLIB_INSTALL_NAME_BASE , puis la reconstruire. Il a été incorrectement défini sur $(LOCAL_LIBRARY_DIR) et j'ai dû le remplacer par @rpath .

Ainsi, à l'étape du traitement de la liaison, il /Library/Frameworks/fw.Framework/fw à l'application hôte de la charger dynamiquement à l'exécution à partir de /Library/Frameworks/fw.Framework/fw (comme dans, la racine du système de fichiers) plutôt que chemin-vers-application /Frameworks/fw.Framework/fw

En ce qui concerne tous les autres paramètres: il doit être à 3 endroits dans Build Phases , mais ils sont tous définis en même temps lorsque vous l'ajoutez simplement au paramètre Embedded Binaries de l'onglet General de l'application d'hébergement.

Je n'ai pas eu à mettre en place une phase de Copy Files supplémentaire, ce qui semble intuitivement redondant par rapport à l'étape d'intégration. En vérifiant la fin de la transcription, nous pouvons nous assurer que ce n'est pas nécessaire.

PBXCp /Users/xyz/Library/Developer/Xcode/DerivedData/MyApp-cbcnqafhywqkjufwsvbzckecmjjs/Build/Products/Debug-iphoneos/MyFramework.framework

[Beaucoup de lignes verbeuses ont été supprimées, mais cela ressort clairement de la transcription simplifiée de l'interface utilisateur de Xcode.]

Je ne sais toujours pas pourquoi Xcode a défini la valeur DYLIB_INSTALL_NAME_BASE incorrectement sur moi.


Pour iOS supérieur ou égal à 8

Sous l'onglet Général de la cible, dans la section Binaires incorporés, ajoutez le cadre. Cela va copier le framework dans le compilé afin qu'il puisse être lié à lors de l'exécution.

Pourquoi cela arrive-t-il? : car le framework que vous liez est compilé comme un framework lié dynamiquement et est donc lié à l'exécution.

Remarque: L' intégration de frameworks personnalisés est uniquement prise en charge dans iOS> 8 et ainsi, une solution alternative qui fonctionne sur les anciennes versions d'iOS suit.

Pour iOS moins de 8

Si vous avez une influence sur ce cadre (vous avez accès au code source / processus de construction), vous pouvez modifier ce cadre pour qu'il soit lié statiquement plutôt que lié dynamiquement. Cela entraînera l'inclusion du code dans votre application compilée plutôt que celle liée à l'exécution, ce qui évitera que le framework ne soit incorporé.

Comment: Sous l'onglet Configuration de la structure, dans la section Liaison, modifiez le type Mach-O en bibliothèque statique. Vous ne devriez pas avoir besoin d'inclure le framework sous les binaires incorporés.

Inclure des ressources: Pour inclure des éléments tels que des images, des fichiers audio ou xib / nib, je recommande de créer un ensemble (essentiellement un répertoire, plus d'informations ici bit.ly/ios_bundle), puis de charger les ressources à l'aide de NSBundle.


Pour ceux qui n'ont pas trouvé de solution, essayez de mettre à jour le système d'exploitation vers Yosemite. Cela a fonctionné pour moi!


  1. Aller au fichier dans xcode -> Paramètres de l'espace de travail
  2. Cliquez sur la flèche à côté de laquelle apparaît / Users / apple / Bibliothèque / Developer / Xcode / DerivedData
  3. Sélectionnez les données dérivées et déplacez-les vers la corbeille.
  4. Tout le xcode et le rouvrir.
  5. Nettoyez le projet et exécutez à nouveau.

Les étapes ci-dessus ont résolu mes problèmes.


Dans mon cas, la solution consistait à supprimer le framework compilé des binaires incorporés, qui était un projet autonome dans l'espace de travail, à le nettoyer et à le reconstruire, puis à le rajouter aux binaires incorporés.


Mon environnement: Cocos2d 2.0, Box2d, Objective C

En plus de faire les autres réponses ci-dessus, je suis finalement allé à l'onglet Général et fait WatchKit Facultatif.


J'ai reçu cette même erreur en essayant d'ajouter manuellement mon cadre créé dans mon projet. Faire glisser le framework dans votre projet ne va pas suffire. C'est comme être dans le même stade mais ne pas être capable de trouver vos enfants. Il m'a fallu quelques essais et erreurs pour le faire fonctionner correctement, mais en suivant ces étapes l'a fait pour moi.

1) Créez votre cadre

  • Développez votre cadre.
  • Une fois votre développement terminé, COMMAND + B construit votre framework et vous assure de recevoir "Build Succeeded".

2) Accéder à votre cadre

  • Une fois que votre projet de framework sera construit avec succès, il sera alors prêt à être accédé dans votre dossier Products dans votre projet.

  • Faites un clic droit sur votre .framework et sélectionnez "Show in Finder".

3) Placez le cadre dans votre projet

  • Glissez et déposez le .framework de votre fenêtre du Finder dans le dossier "Framework" de votre projet d'application.

4) Configurer le projet d'application pour le framework

  • Sélectionnez le niveau supérieur dans votre projet

  • Choisissez votre cible

  • Allez dans "Build Phases", puis "Link Binary with Libraries", et assurez-vous que votre framework est inclus avec optionnel sélectionné .

  • Toujours dans "Build Phases", allez en haut à gauche et sélectionnez le bouton + . Dans la liste déroulante choisissez "Nouvelle copie des fichiers phase".

  • Faites défiler jusqu'à la nouvelle section "Copier les fichiers" et assurez-vous que vous définissez Destination pour "Frameworks". Laissez le sous-chemin vide. Puis cliquez sur le bouton + en bas à gauche.

  • Vous serez présenté avec votre hiérarchie de projet. Faites défiler jusqu'au dossier "Frameworks" dans lequel vous avez ajouté le framework à l'étape 3, ou recherchez-le dans la barre de recherche en haut. Sélectionnez votre cadre et cliquez sur "Ajouter".

  • Assurez-vous que votre cadre est inclus avec "Code Sign On Copy" sélectionné.

5) Nettoyez, puis exécutez votre projet

  • COMMAND + SHIFT + K
  • COMMAND + R

J'ai eu le même problème. J'ai essayé de construire mon projet avec un iPhone que je n'avais jamais utilisé auparavant et je n'ai pas ajouté de nouveau framework. Pour moi, le nettoyage a bien fonctionné ( Maj + Commande + K ). Peut-être que c'est parce que j'utilise la version bêta 5 de Xcode 7 et un iPhone 6 avec iOS 9 Beta, mais ça a marché.


Si vous utilisez un framework tiers et que vous utilisez Cocoapods comme gestionnaire de dépendance, essayez d' pod install un pod install pour actualiser vos pods.

Ce crash se produisait sur une librairie tierce que j'utilisais, donc content que la solution ci-dessus ait fonctionné pour moi, j'espère que ça fonctionne pour vous!


Si vous avez un pod de développement Supprimez votre application de l'installation du simulateur depuis pod -> clean -> exécutez à nouveau ...





xcode6