J'essaie de créer un framework OS X de base. Pour le moment, je viens de créer un framework de test: TestMacFramework.framework
et j'essaie de l'importer dans un tout nouveau projet d'application OS X.
J'ai construit le fichier .framework et l'ai importé dans le nouveau projet. Le cadre semble bien être lié, et je peux faire référence au fichier d'en-tête public que j'ai ajouté à la section des phases de construction du cadre.
Cependant, lorsque j'essaie d'exécuter l'application conteneur, l'erreur suivante apparaît:
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 recherche sur Google, je me suis rendu compte que je devais ajouter une section Copy Files
aux phases de construction de mon application conteneur. Je l'ai donc fait et l'ai configuré comme suit ...
Cependant, je reçois toujours l'erreur d'exécution. Évidemment, je fais quelque chose de mal ici, mais la ressource de la bibliothèque de développeurs Apple pour cette référence fait référence à Xcode 2, donc ce n'est pas très utile!
Qu'est-ce que j'ai manqué?
METTRE À JOUR:
Je vois dans le journal de construction que mon TestMacFramework.framework
est en cours de copie dans le répertoire .app content/frameworks, mais il n'est pas installé dans le répertoire Library/Frameworks du disque dur.
MISE À JOUR 2:
La construction est correctement reliée si je copie manuellement le TestMacFramework.framework
dans le répertoire Library/Frameworks
[de Xcode 6 -> 7.3]
(Oui, je travaille toujours sur Xcode 10, iOS et macOS)
La seule chose à faire est d'ajouter le cadre à la section Embedded binaries
de l'onglet General
de votre cible d'application.
Alors j'ai réussi à le faire fonctionner, c'est assez simple quand on a les bonnes instructions. Ce que je recherchais, c’était un framework «privé» qui réside dans le bundle App au lieu d’être écrit dans le dossier de la bibliothèque système.
Construire le cadre
Y compris le cadre
C'était assez simple pour moi, je viens d'ajouter mon framework à mes binaires incorporés sous des cibles app
Les options ci-dessus où il m'est impossible d'inclure ..__ Je l'ai résolu en spécifiant le chemin de recherche Runpath
Ceci est sur l'onglet ' Paramètres de construction ' . Dans la section ' Liaison ' . Modifier ' Chemin de recherche de chemins de cheminement ' dans $(inherited) @executable_path/Frameworks
Aucune de ces questions n'a résolu ce problème pour moi. Le problème à la fin était assez facile. Il semble que ce soit un très gros bogue Xcode auquel j’ai consigné le problème et que j’ai corrigé sous le bogue Apple: 29820370. Si vous avez des problèmes soulève un bogue sur le rapport de bogue: https://bugreport.Apple.com/ et fais référence au bogue que j'ai soulevé pour gagner de la visibilité. Je veux que Xcode redevienne le plaisir qu’il était auparavant - et c’est quelque chose que je suis sûr que Xcode aurait dû résoudre lui-même.
Voici le correctif: 1. Ouvrir le trousseau - accédez à Apple Worldwide Developer Cert. 2. Double-cliquez dessus 3. Modifiez le niveau d'autorisation de "toujours faire confiance" pour utiliser les valeurs par défaut du système 4. Enregistrez et fermez-le 5. Redémarrez Xcode, nettoyez et construisez votre projet et il devrait être parti.
Capture d'écran ci-dessous des paramètres corrects: J'espère que cela t'aides!
La suppression des données dérivées l’a sauvegardée pour moi
J'ai rencontré le même problème mais la solution acceptée ne fonctionnait pas pour moi. Au lieu de cela, la solution consistait à modifier le nom d'installation du framework.
L'erreur dans le message d'origine 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
Notez le premier chemin après Bibliothèque non chargée . La structure est en cours de chargement à partir d'un chemin absolu. Ce chemin provient 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é à une application, ce chemin doit être relatif et prendre la forme suivante: @ rpath/MyFramework.framework/MyFramework . Si le nom d'installation de votre infrastructure est un chemin absolu, il risque de ne pas être chargé au moment de l'exécution et une erreur similaire à celle ci-dessus sera générée.
La solution consiste à 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
Lorsque vous faites glisser un cadre personnalisé dans un projet sous Xcode 10.1 , il suppose que le cadre est un cadre système et place le cadre dans la section "Lier des fichiers binaires avec des bibliothèques" de "Phases de construction". "sous votre cible.
Les structures système sont déjà présentes sur le périphérique. Par conséquent, il n'est pas copié sur le périphérique et ne peut donc pas être exécuté à l'exécution, donc KABOOM (blocage dans __abort_with_payload et erreur de désinformation: "Raison: image introuvable"). En effet, le code de framework n'est pas copié sur le périphérique ...
En réalité, pour que Xcode lie le framework personnalisé et veille à ce qu'il soit copié avec votre code sur le périphérique iOS (réel ou simulateur), le framework personnalisé doit être déplacé vers "Copier les ressources du bundle". En fin de compte, le package ainsi que l’exécutable du code sont disponibles sur le périphérique.
Pour ajouter un framework personnalisé à un projet et éviter le crash Apple:
La structure personnalisée est ainsi copiée avec votre code sur votre périphérique cible et est disponible au moment de l'exécution.
[éditorial: vous voudriez réfléchir Xcode serait assez intelligent pour comprendre la différence entre l’un de ses cadres système qui n’a pas besoin d’être copié sur le périphérique et un cadre personnalisé qui est, oh, je ne sais pas, dans la hiérarchie du répertoire racine du projet ... ????]
Il devrait y avoir un 'script d'exécution' dans '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 d'accès à vos bibliothèques. Comme ça:
Si vous réinitialisez accidentellement votre trousseau, cela peut être dû à l'absence de certificats Apple dans le trousseau. J'ai suivi ceci pour résoudre mon problème.
J'ai eu le même problème et j'ai pu résoudre le problème en re-téléchargeant le WWDR (Autorité de certification des relations de développeurs Apple Worldwide) . Téléchargez à partir d'ici: http://developer.Apple.com/certificationauthority/AppleWWDDRCA.cer
Pour Xcode 8, certains produits périmés seront supprimés du dossier de données dérivées, reportez-vous à cette solution .
Basé sur la pensée de l'auteur, j'ai trouvé ce journal de construction provenant 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 copie du fichier et copié la structure obsolète cible dans la cible Frameworks, le journal de suppression ci-dessus disparaît après la reconstruction.
Juste clarifier ma situation et la raison, espérons que cela est utile pour quelqu'un.
Pour moi, c'était la solution, après plusieurs heures de recherche !!
Pour une raison quelconque, bien dans le développement d'un framework personnalisé Swift 2.3, Xcode 8 avait supprimé le paramètre DYLIB_INSTALL_NAME_BASE
du fichier project.pbxproj
. Un petit tour dans le paramètre Build Settings / Dynamic Library Install Name Base
pour revenir à @rpath
l'a corrigé.
J'ai essayé de nombreux correctifs, mais ce qui a fonctionné pour moi a été de supprimer une cible manquante répertoriée dans l'onglet de construction du schéma de construction. Vous pouvez y accéder en ouvrant la fenêtre d'édition du schéma actuel.
Edit: Ma cible de test d'interface utilisateur ne fonctionnait pas aussi bien, et la solution que j'ai trouvée était de la supprimer et de la générer à nouveau.
J'ai eu le même problème pour une raison différente . J'ai créé une nouvelle configuration pour Debug and Release (sous PROJECT -> onglet Info -> Configuration) . Et j'ai dû changer mon framework Shell Pods- "appName" -frameworks.sh, sous Fichiers de support des cibles) pour le faire fonctionner.
[Xcode 9]
Si vous utilisez Xcode 11, assurez-vous que le cadre est ajouté dans les cadres, les bibliothèques et le contenu intégré dans les paramètres de la cible - Général. Changer le statut d'intégration de - 'Ne pas intégrer' à 'Intégrer & signer' "
Je pense qu’il n’existe aucun moyen de résoudre ce problème, qui pourrait être causé par une raison différente. J'ai également eu ce problème la semaine dernière, je ne sais pas quand ni exactement quelle est la cause de ce problème, uniquement lorsque je l'exécute sur un simulateur avec Xcode ou que je tente de l'installer sur le téléphone, puis il signale un tel type d'erreur. exécutez-le avec réactif natif run-ios avec terminal, il n'y a pas de problème.
J'ai vérifié tous les moyens affichés sur Internet, comme renouveler le certificat, modifier les paramètres dans Xcode (tous les moyens mentionnés ci-dessus), en fait, tous les paramètres dans Xcode étaient déjà définis comme ils l'avaient demandé auparavant, aucun des moyens ne fonctionne pour moi. Jusqu'au matin où je supprime les modules et que je les réinstalle, l'erreur disparaîtra au bout d'une semaine. Si vous utilisez également du cocoapod et qu'une erreur est apparue sans aucune raison spécifique, vous pouvez peut-être essayer ma façon.
J'ai constaté que ce problème concernait uniquement la signature de code et les certificats, pas le code lui-même. Pour vérifier cela, créez l'application de vue unique de base et essayez de l'exécuter sans aucune modification sur votre appareil. Si vous voyez le même type d'erreur, cela montre que votre code va bien. Comme moi, vous constaterez que vos certificats sont invalides. Téléchargez à nouveau et corrigez ceux qui ont expiré. Ensuite, lorsque vous obtenez l’application de base pour ne pas signaler l’erreur, essayez à nouveau votre application après avoir quitté Xcode et éventuellement redémarré votre Mac. Cela a finalement mis fin à ce cauchemar. Très probablement, cela n'a rien à voir avec votre code, surtout si vous recevez le message Construire avec succès lorsque vous essayez de l'exécuter. FYI
Ce qui a résolu le problème pour moi a été de changer abstract_target
en target
pour la cible principale de mon Podfile. Je l'avais précédemment défini à abstract_target
et cela a causé l'erreur décrite. Maintenant cela fonctionne comme un charme
Vous avez le problème lorsque vous essayez Xcode 9 beta et que vous revenez à Xcode 8. Un simple nettoyage sur la cible a résolu le problème.
open xcode -> général -> Binaires incorporés -> add QBImagepicker.framework et RSKImageCropper -> projet propre
il suffit d'ajouter QBImagePicker.framework et RSKImageCropper.framework aux binaires incorporés qui ont fonctionné pour moi
La seule chose qui a fonctionné pour moi:
Cible> Phases de construction> [CP] Frameworks de pods intégrés Décochez les cases "Afficher les variables d'environnement dans le journal de construction" et "Exécuter le script uniquement lors de l'installation".