OS X Framework Library non chargé: 'Image not found'

j'essaie de créer un Framework OS X de base, pour l'instant je n'ai qu'un framework test créé: TestMacFramework.framework et j'essaie de l'importer dans un tout nouveau projet D'Application OS X.

j'ai construit le .j'ai ajouté le fichier d'en-tête public à la section des phases de construction du cadre.

cependant, quand j'essaie d'exécuter l'Application container Je reçois L'erreur suivante:

dyld: Library not loaded: /Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework
  Referenced from: /Users/samharman/Library/Developer/Xcode/DerivedData/TestMacContainer-dzabuelobzfknafuhmgooqhqrgzl/Build/Products/Debug/TestMacContainer.app/Contents/MacOS/TestMacContainer
  Reason: image not found

après un peu de googling, j'ai réalisé que j'avais besoin d'ajouter une section Copy Files à mes phases de construction de l'Application container, donc je l'ai fait et je l'ai mis en place comme ça...

enter image description here

Cependant, j'ai toujours l'erreur d'exécution. Je fais évidemment quelque chose de mal ici, mais la ressource de bibliothèque de développeur D'Apple pour ce références Xcode 2, donc n'est pas très utile!

Qu'est-ce que j'ai manqué?

mise à jour:

je peux voir dans le journal que mon TestMacFramework.framework est copié dans le .contenu de l'application / répertoire frameworks, mais il n'est pas installé dans le répertoire Library/Frameworks de la HD

enter image description here

mise à JOUR 2:

la construction des liens correctement si Je copie manuellement le TestMacFramework.framework dans le Library/Frameworks répertoire

189
demandé sur Sammio2 2014-07-28 14:56:57

17 réponses

[de Xcode 6 - > 7.3]

(Oui, je travaille toujours sur Xcode 9)

la seule chose à faire est d'ajouter le framework à la section "Embedded binaires" dans l'onglet " General "de votre application cible

enter image description here

407
répondu Kappe 2018-08-21 01:00:16

Si j'ai réussi à le faire fonctionner, c'est assez simple quand vous avez les bonnes instructions. Ce que je cherchais était un cadre "privé" qui vit dans le paquet D'applications plutôt que d'être écrit dans le dossier de la bibliothèque système.

Construire Le Cadre

  1. Ajouter une cible pour créer un Cadre de Cacao
  2. dans cette cible 'Build Settings' configurer le 'répertoire D'Installation' pour "@executable_path/../Frameworks'
  3. Construire la bibliothèque et de l'accès à l' .cadre de l'archive ou le répertoire de produits

Y Compris Le Cadre

  1. faites Glisser le créé .fichier framework dans le projet Xcode, assurez-vous de cocher 'Copier des fichiers dans le répertoire'
  2. dans la cible containing applications, Ajouter un nouveau 'Copy File Build Phase '
  3. Set la "Destination" aux "cadres
  4. faites-le Glisser dans le créé .cadre
48
répondu Sammio2 2014-07-31 13:09:31

c'était assez simple pour moi, je viens d'ajouter mon framework à mes binaires intégrés sous les cibles app

18
répondu Robin Delaporte 2015-05-28 15:08:04

les options ci-dessus lorsque ce n'est pas possible pour moi d'inclure. Je l'ai résolu en spécifiant le chemin de recherche de Runpath

C'est sur l'onglet paramètres de construction ". Dans la section " "Linking ". Remplacer ' Runpath search Paths ' par $(inherited) @executable_path/Frameworks

12
répondu Vincent 2016-05-17 12:13:50

aucune de ces questions n'a résolu ceci pour moi. Le problème à la fin était assez facile. Il ressemble à son un bug Xcode assez important que j'ai enregistré le problème et corrigé sous Apple bug: 29820370. Si vous êtes en difficulté (car il semble qu'il y ait plusieurs pages de problèmes similaires à celui-ci), alors ce serait bien si vous pouviez créer un bug sur bug reporter: https://bugreport.apple.com / et référez-vous au bogue que j'ai soulevé pour gagner en visibilité. Je veux faire revenir Xcode dans le plaisir qu'il était avant - et c'est quelque chose que je suis sûr que Xcode aurait dû se fixer.

Voici la solution: 1. Ouvrir le porte-clés-passer à Apple Worldwide Developer Cert. 2. Double-Cliquez sur elle 3. Changer le niveau de permission de "toujours confiance" pour utiliser les valeurs par défaut du système 4. Enregistrer et fermer 5. Redémarrez Xcode, nettoyez et construisez votre projet et il devrait être parti.

capture d'écran ci-dessous des paramètres corrects: Keychain access fixed Espérons que cette aide!

7
répondu Mobile Bloke 2016-12-30 19:01:31

suppression des données dérivées enregistré pour moi

5
répondu SleepsOnNewspapers 2015-09-03 15:52:26

je suis tombé sur la même question, mais la solution acceptée n'a pas fonctionné pour moi. La solution était plutôt de modifier le nom d'installation du framework.

L'erreur dans le post original est:

dyld: Library not loaded: /Library/Frameworks/TestMacFramework.framework/Versions/A/TestMacFramework
  Referenced from: /Users/samharman/Library/Developer/Xcode/DerivedData/TestMacContainer-dzabuelobzfknafuhmgooqhqrgzl/Build/Products/Debug/TestMacContainer.app/Contents/MacOS/TestMacContainer
  Reason: image not found

noter le premier chemin après Bibliothèque non chargée . Le cadre est chargé à partir d'un chemin absolu. Ce chemin vient du nom d'installation du framework (parfois appelé rpath), qui peut être examiné en utilisant:

otool -D MyFramework.framework/MyFramework

Lorsqu'un framework est intégré dans une application, ce chemin doit être relatif et de cette forme: @rpath/Myfram Framework.cadre / mon cadre . Si le nom d'installation de votre framework est un chemin absolu, il ne peut pas être chargé à l'exécution et une erreur similaire à celle ci-dessus sera produite.

la solution est de modifier le nom de l'installation:

install_name_tool -id "@rpath/MyFramework.framework/MyFramework" MyFramework.framework/MyFramework 

avec ce changement Je ne reçois plus l'erreur

4
répondu Amos Joshua 2017-06-28 07:56:37

si vous réinitialisez accidentellement votre porte-clés, cela peut se produire en raison de certificats Apple manquants dans le porte-clés. J'ai suivi ce pour résoudre mon problème.

j'ai eu le même problème et j'ai pu le corriger en téléchargeant à nouveau le WWDR (Apple Worldwide Developer Relations Certification Authority). Télécharger ici: http://developer.apple.com/certificationauthority/AppleWWDRCA.cer

3
répondu user1742302 2015-10-22 03:09:49

il devrait y avoir un 'Script D'exécution' dans les 'phases de construction' avec ceci:'/usr/local/bin / Carthage copy-frameworks '

sur les 'fichiers D'entrée' de ce 'Script D'exécution', vous devez ajouter le chemin vers vos bibliothèques. Comme ceci:

Build Phases Run Script

2
répondu thacilima 2017-02-10 15:40:46

pour Xcode 8, certains produits périmés seront retirés du dossier de données dérivées se référer à cette solution .

Apple: Dans macOS 10.12 et, plus tard, Xcode, nettoie vicié provenant de données, les en-têtes précompilés, et le module de caches. (23282174)

le système de construction Xcode prend en charge la suppression de certains types d'artefacts de construction qui ont été produits en une version précédente, mais ont depuis été retirés du projet.

basé sur la pensée de l'auteur, j'ai trouvé ce journal de construction de mon cas.

Remove stale build products

/bin/rm -rf /Users/usename/Library/Developer/Xcode/DerivedData/myapp-esvvhwwwwngijeemhatmklwzoxnb/Build/Products/Debug-iphonesimulator/myapp.app/Frameworks/AliyunVodPlayerSDK.framework
/bin/rmdir /Users/usename/Library/Developer/Xcode/DerivedData/myapp-esvvhwwwwngijeemhatmklwzoxnb/Build/Products/Debug-iphonesimulator/myapp.app/Frameworks

après avoir créé une nouvelle phase de fichier de copie et copié la cible périmé framework à Frameworks destination, le journal de suppression ci-dessus disparaît après la reconstruction.

il suffit de clarifier ma situation et la raison, j'espère que c'est utile pour quelqu'un.

1
répondu Itachi 2017-06-15 15:17:51

Pour moi, c'était la solution, après de nombreuses heures de recherche!!

pour une raison ou une autre, Xcode 8 avait supprimé le paramètre DYLIB_INSTALL_NAME_BASE du fichier project.pbxproj au cours du développement D'un cadre personnalisé Swift 2.3. Une petite promenade dans le Build Settings / Dynamic Library Install Name Base de retour à @rpath fixé.

(de https://forums.developer.apple.com/thread/4687 )

1
répondu encaps 2017-11-30 14:19:48

j'ai trouvé que cette question était liée seulement à la signature du code et des certificats pas le code lui-même. Pour vérifier cela, créer la base unique de l'application et essayez de l'exécuter sans aucune modification de votre appareil. Si vous voyez le même type d'erreur, cela montre que votre code est correct. Comme moi, vous constaterez que vos certificats sont valides. Téléchargez tout et corrigez ceux qui sont périmés. Puis, lorsque vous obtenez l'application de base de ne pas signaler l'erreur essayer votre application à nouveau après avoir quitté Xcode et peut-être redémarrer votre mac pour la bonne mesure. Cela a finalement mis fin à ce cauchemar. Sans doute cela n'a rien à voir avec votre code, surtout si vous êtes l'établissement de message lorsque vous essayez d'exécuter. Pour information 151910920"

0
répondu iOS4Fun 2017-05-11 15:49:33

a eu le problème en essayant Xcode 9 beta et revenir à Xcode 8. Un simple nettoyage de la cible a résolu le problème.

0
répondu Xavier 2017-06-07 12:11:29

j'ai eu le même problème pour une raison différente. J'ai créé une nouvelle configuration pour déboguer et libérer (sous L'onglet Projet -> info -> Configuration). Et j'ai dû changer mon script shell pod frameworks (Pods-"appName"-frameworks.sh , sous Targets Support Files) pour que cela fonctionne.

[Xcode 9]

0
répondu Yuval 2017-11-15 12:22:21

La seule chose qui a fonctionné pour moi:

objectif > phases de construction > [CP] cadres de Pods intégrés Décochez la case "Afficher les variables d'environnement dans le build log" et "Exécuter un script uniquement lors de l'installation"

0
répondu Neil 2017-12-22 20:19:03

j'ai essayé de nombreuses corrections, mais ce qui a fonctionné pour moi était de supprimer une cible manquante listée dans l'onglet Construire du schéma de construction. Vous pouvez y accéder en ouvrant la fenêtre d'édition du schéma courant.

Edit: ma cible de test de L'interface ne fonctionnait pas aussi bien, et la solution que j'ai trouvée était de la supprimer et de la générer à nouveau.

0
répondu Gonzalo 2018-05-18 14:49:29

ouvrez xcode -> général -> Embedded Binaires -> ajouter QBImagepicker.cents cinquante et une million neuf cent dix mille neuf cent vingt"

il suffit d'ajouter QBImagePicker.cadre et RSKImageCropper.cadre aux binaires intégrés a travaillé pour moi

0
répondu Agustiar 2018-05-30 08:15:19