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

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

  • Créer une Cocoa Touch Cadre du projet
  • Ajouter un fichier swift et une classe Dog
  • Construire un cadre pour l'appareil
  • créer une application de vue unique dans Swift
  • Importer le cadre de projet d'application
  • Instancier swift classe à partir du cadre dans ViewController
  • générer et exécuter l'application sur l'appareil

L'application immédiate s'est écrasé lors du 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 crash. Cependant, je peux construire app et fonctionner sur simulateur amende. Aussi je suis conscient que je peux changer le cadre de requis à facultatif dans lien binaire avec les bibliothèques , mais il n'a pas complètement résolu le problème, l'application s'est écrasé lorsque je crée une instance de chien . Le comportement est différent sur le périphérique et le simulateur, je soupçonne que nous ne pouvons pas distribuer le framework pour le périphérique en utilisant la version bêta de Xcode. Quelqu'un peut-il éclairer sur ce point?

485
demandé sur vladof81 2014-06-20 23:00:40
la source

20 ответов

dans l'onglet " General de la cible, il y a un champ Embedded Binaries . Lorsque vous ajoutez le cadre de l'incident est résolu.

Référence ici sur les Forums des Développeurs Apple.

877
répondu vladof81 2016-05-04 19:49:19
la source

pour iOS supérieur ou égal à 8

sous l'onglet Général de la cible, dans la section binaires intégrés, ajouter le framework. Cela copiera le framework dans le compilé pour qu'il puisse être relié à at runtime.

enter image description here

pourquoi cela se produit-il? : parce que le framework auquel vous faites référence est compilé comme un framework dynamiquement lié et est donc lié à at Runtime.

Note : Intégration personnalisée des cadres est pris en charge uniquement dans iOS > 8 et ainsi et autre solution qui fonctionne sur les anciennes versions d'iOS suit.

pour iOS de moins de 8

si vous avez de l'influence sur ce framework (avoir accès au code source / processus de construction), vous pouvez modifier ce framework pour qu'il soit lié statiquement plutôt que dynamiquement. Ceci fera que le code sera inclus dans votre application compilée plutôt que liée à l'exécution et donc le framework n'aura pas à être intégré.

How: sous L'onglet Build Setting du framework, dans la section de liens, changez le de type Mach-O en bibliothèque statique. Vous devriez maintenant pas besoin d'inclure le cadre intégré binaires.

Static Framework

Y Compris Les Éléments D'Actif : pour inclure des choses telles que des images, des fichiers audio, ou des fichiers xib/nib, je recommande de créer un bundle (essentiellement un répertoire, plus d'info ICI bit.ly / ios_bundle) et ensuite charger les actifs du paquet en utilisant NSBundle.

229
répondu Dawson 2015-08-14 23:39:10
la source

j'ai reçu cette même erreur en essayant d'ajouter manuellement mon framework créé dans mon projet. Il ne suffit pas d'intégrer le cadre dans votre projet. C'est comme ÊTRE dans le même stade mais ne pas être en mesure de trouver vos enfants. Il m'a fallu quelques essais et erreurs pour qu'il fonctionne correctement, mais en suivant ces étapes, il l'a fait pour moi.

1) créer votre cadre

  • Développez votre cadre.
  • une fois votre développement terminé, COMMAND + B construisez votre cadre et assurez-vous de recevoir"construire réussi".

enter image description here

2) accédez à votre cadre

  • une fois que votre projet-cadre aura été construit avec succès, il vous sera alors possible d'accéder à votre Dossier Products dans votre projet.

enter image description here

  • faites un clic droit sur votre .framework et sélectionnez"Afficher dans Finder".

enter image description here

3) placez le cadre dans votre projet

  • Glisser et déposer les .framework de votre fenêtre de recherche dans le dossier" Framework " de votre projet app.

enter image description here

4) Configurer l'application du projet de cadre

  • sélectionnez le niveau le plus élevé de votre projet

enter image description here

  • Choisissez votre cible

enter image description here

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

enter image description here

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

enter image description here

  • Faites défiler vers le bas jusqu'à la nouvelle section" copier les fichiers "et assurez-vous de mettre Destination à"Frameworks". Laissez le subpath vide. Ensuite, cliquez sur le bouton + en bas à gauche.

enter image description here

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

enter image description here

  • assurez-vous que votre cadre est inclus avec "Code de Signer Sur la Copie" sélectionné.

enter image description here

5) Nettoyer, puis exécuter votre projet

  • COMMAND + SHIFT + K
  • COMMAND + R
68
répondu Brandon A 2017-04-04 05:26:00
la source

tout d'abord essayer de construire après la Commande+Option+Shift+K.Si elle échoue encore, alors faire en dessous des étapes.

si quelqu'un est confronté à cette erreur dans Xcode 8, alors changez votre statut de framework en optionnel au lieu de requis sous L'onglet Général de votre cible.

enter image description here

42
répondu Desert Rose 2016-10-06 14:36:13
la source

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

regardez cette capture d'écran:

enter image description here

Espère que ça aide!

40
répondu NeverHopeless 2016-11-10 16:44:01
la source

j'ai dû (en plus de ce qui est mentionné ici) Ajouter la ligne suivante à Runpath search Paths sous Build Settings onglet:

@executable_path/Frameworks

enter image description here

23
répondu Aviel Gross 2015-03-26 18:06:56
la source

vous devez ajouter le framework à une nouvelle phase de compilation de fichiers de copie pour vous assurer que le framework est copié dans le paquet d'application à l'exécution..

Voir Comment ajouter un "Copier des Fichiers de la phase de construction" à ma Cible pour plus d'informations.

Docs Apple officiels: https://developer.apple.com/library/mac/recipes/xcode_help-project_editor/Articles/CreatingaCopyFilesBuildPhase.html

20
répondu liamnichols 2017-05-23 14:47:32
la source

j'ai obtenu le même type de problème dans iOS 9.X version

ISSUE IS: App crashes as soon as I open the app with below error.


dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserNotifications Referenced from: /var/containers/Bundle/Application/######/TestApp.app/TestApp Reason: image not found

j'ai résolu cette question en remplaçant Required par Optional dans Linked Frameworks and Libraries par UserNotifications.framework .

20
répondu jfalexvijay 2016-11-04 12:24:51
la source

ajouter le cadre dans les binaires encastrés enter image description here

puis nettoyer et construire.

8
répondu Vineesh TP 2018-03-07 19:35:57
la source

dans mon cas, la solution a été de supprimer le cadre compilé des binaires embarqués, qui était un projet autonome dans l'espace de travail, de le nettoyer et de le reconstruire, et finalement de rajouter aux binaires embarqués.

7
répondu Andrea Leganza 2017-05-26 09:56:24
la source

mon environnement: Cocos2d 2.0, Box2d, objectif c

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

Target General Linked Frameworks and Libraries Watchkit.framework Optional

6
répondu Jim Rota 2015-08-22 22:28:56
la source

si vous utilisez un framework tiers, et utilisez Cocoapods comme gestionnaire de dépendances, essayez de faire un pod install pour rafraîchir vos pods.

cette panne se produisait sur une bibliothèque tierce que j'utilisais, donc content que la solution ci-dessus ait fonctionné pour moi, j'espère qu'elle fonctionne pour vous!

5
répondu NYC Tech Engineer 2015-12-16 01:09:59
la source

é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 dans le même espace de travail. Il s'avère qu'il a été construit incorrectement. D'après la dernière réponse de jeremyhu à ce sujet:

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

j'ai dû mettre Dynamic Library Install Name Base ( DYLIB_INSTALL_NAME_BASE ) sous Build Settings de la Framework et puis le reconstruire. Il était incorrectement réglé sur $(LOCAL_LIBRARY_DIR) et j'ai dû le changer en @rpath .

ainsi, au stade du traitement des liens, il a été demandé à L'application hôte de le charger dynamiquement à l'exécution de /Library/Frameworks/fw.Framework/fw (comme dans, la racine du système de fichiers) plutôt que path-to-App /Frameworks/fw.Framework/fw

en ce qui concerne tous les autres paramètres: il does doivent être en 3 endroits dans Build Phases , mais ceux-ci sont tous définis à la fois quand vous venez de l'ajouter au paramètre Embedded Binaries de l'onglet General de l'application d'hébergement.

j'ai fait pas régler un supplément de Copy Files phase", qui semble intuitivement redondantes par rapport à l'étape de l'enrobage de toute façon. En vérifiant la fin de la transcription de la construction, nous pouvons vous assurer que ce n'est pas nécessaire.

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

les lignes ont été supprimées, mais c'est clair à partir de la transcription simplifiée dans L'interface utilisateur Xcode.]

j'ai encore non idée pourquoi Xcode définir le DYLIB_INSTALL_NAME_BASE valeur incorrecte sur moi.

5
répondu BaseZen 2016-10-25 00:21:12
la source

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

4
répondu Fri3ndlyGerman 2015-08-17 14:35:09
la source

après avoir essayé toutes les méthodes disponibles sur internet et mes propres trucs d'essai et d'erreur 100 fois. Finalement j'ai réussi à le résoudre. - Apeksha Sahu 6 minutes ago

Goto iTunes sous Mac --> comptes-->Autoriser cet ordinateur – Apeksha Sahu 5 minutes ago

la deuxième étape.... Développeur Goto dans les paramètres de l'iPad et iPhone et reindex avec des identificateurs et des ordinateurs de confiance claire tout. Il a travaillé pour moi........ ....... Après avoir réinstallé Mac OSHigh seria 10.13.15 version à partir de Mac OS seirra beta dernière version, pour réinstaller la dernière version de Xcode, après mise à jour de tous les certificats. etc etc etc... autant de méthodes que vous pouvez penser que j'ai fait. – enter image description here

1
répondu Apeksha Sahu 2018-06-26 22:44:02
la source

si ont pod de développement supprimer votre application du simulateur installer à partir de pod -> nettoyer - > exécuter à nouveau...

0
répondu Rajesh Kumar 2017-12-15 13:24:05
la source
  1. Aller dans "fichier" dans xcode -> paramètres d'espace de travail
  2. cliquez sur la flèche à côté de laquelle apparaît / Users / apple/Library/Developer/Xcode /DerivedData
  3. sélectionnez les données dérivées et déplacez-les à la Corbeille.
  4. tout à fait le xcode et le rouvrir.
  5. nettoyer le projet et courir à nouveau.

les étapes ci-dessus résolurent mes problèmes.

0
répondu john raja 2018-05-02 11:58:03
la source

la même chose s'est produite lorsque j'ai créé un nouveau schéma de Configuration et de construction .

donc la solution pour moi était de courir

pod install

pour cette Configuration nouvellement créée.

0
répondu atereshkov 2018-09-12 13:03:15
la source

dans le cas où quelqu'un connaît encore ce problème, malgré toutes les étapes décrites dans les nombreuses autres réponses, vous pouvez avoir besoin de révoquer et recréer votre certificat de signature de code , comme suit:

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

-2
répondu Sam 2015-10-06 13:07:27
la source

pour ceux dont le correctif n'a pas fonctionné, essayez de mettre à jour le système D'exploitation sur Yosemite. Il a travaillé pour moi!

-26
répondu Prabu 2014-11-28 09:29:20
la source

Autres questions sur