Ce plantage était un problème bloquant. En principe, j’ai suivi les étapes suivantes pour reproduire le problème:
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 des appareils iOS 7.1 et 8.0, ils ont tous deux le même crash. Cependant, je peux créer une application et m'exécuter sur un simulateur. Aussi, je suis conscient que je peux changer le framework de Obligatoire à Facultatif in Lier Binary With Libraries , mais cela n'a pas complètement résolu le problème, l'application est tombée en panne lorsque je crée une instance de Chien . Le comportement est différent sur le périphérique et le simulateur, je suppose que nous ne pouvons pas distribuer le framework pour le périphérique à l'aide de la version bêta de Xcode. Quelqu'un peut-il faire la lumière sur cette question?
L'onglet Général de la cible contient un champ Embedded Binaries. Lorsque vous ajoutez le cadre, le crash est résolu.
La référence est ici sur les forums de développeurs Apple.
Sous l'onglet Général de la cible, dans la section Binaires incorporés, ajoutez le cadre. Cela copiera le framework dans le compilé afin qu'il puisse être lié au moment de l'exécution.
Pourquoi cela arrive-t-il? : parce que le cadre auquel vous vous associez est compilé en tant que cadre lié dynamiquement et est donc lié au moment de l'exécution.
Remarque: L'incorporation des infrastructures personnalisées est uniquement prise en charge dans iOS> 8. Une solution alternative fonctionnant sur les anciennes versions d'iOS est ensuite proposée.
Si vous avez une influence sur ce cadre (accès au code source/processus de construction), vous pouvez changer ce cadre pour qu'il soit lié statiquement plutôt que dynamiquement. Cela fera en sorte que le code soit inclus dans votre application compilée plutôt que lié au moment de l'exécution, de sorte que le cadre n'aura pas à être incorporé.
Comment: Sous l'onglet Paramètre de construction de la structure, dans la section Liaison, modifiez le Type Mach-O en Bibliothèque statique. Vous ne devriez plus avoir besoin d'inclure la structure sous des fichiers binaires incorporés.
Y compris les actifs: Pour inclure des éléments tels que des images, des fichiers audio ou des fichiers xib/nib, je vous recommande de créer un bundle (essentiellement un répertoire, des informations supplémentaires ici bit.ly/ios_bundle), puis de charger les actifs du bundle à l'aide de NSBundle .
Il ne suffit pas de faire glisser le cadre dans votre projet. C'est comme être dans le même stade sans pouvoir retrouver ses enfants. Suivez ces étapes:
1) Créez votre framework
COMMAND
+ B
construisez votre framework et assurez-vous de recevoir "Build Succeeded".2) Accéder à votre framework
Products
de votre projet..framework
et sélectionnez "Afficher dans le Finder".3) Place framework dans votre projet
.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
+
. Dans le menu déroulant, choisissez "Nouvelle phase de copie des fichiers".Destination
sur "Frameworks". Laissez le sous-chemin vide. Cliquez ensuite sur le bouton +
en bas à gauche. 5) Nettoyer, puis lancez votre projet
COMMAND
+ SHIFT
+ K
COMMAND
+ R
Je devais (en plus de ce qui est mentionné ici) ajouter la ligne suivante à onglet Chemin de recherche de chemins d’accès sous Paramètres de construction:@executable_path/Frameworks
J'ai le même genre de problème dans la version iOS 9.x
Le problème est: L'application se bloque dès que j'ouvre l'application avec l'erreur ci-dessous .
dyld: Bibliothèque non chargée: /System/Library/Frameworks/UserNotifications.framework/UserNotifications Référencé à partir de: /var/containers/Bundle/Application/######/TestApp.app/TestApp Raison: image non trouvée
J'ai résolu ce problème en remplaçant Required
par Optional
dans Linked Frameworks and Libraries
pour UserNotifications.framework
framework.
Vous devez ajouter la structure à une nouvelle phase de construction de copie de fichiers pour vous assurer que la structure est copiée dans le groupe d'applications au moment de l'exécution.
Voir Comment ajouter une phase de création de fichiers de copie à ma cible pour plus d'informations.
Documents Apple officiels: https://developer.Apple.com/library/mac/recipes/xcode_help-project_editor/Articles/CreatingaCopyFilesBuildPhase.html
Dans mon cas, la solution consistait à supprimer la structure compilée des fichiers binaires incorporés, qui était un projet autonome dans l'espace de travail, à la nettoyer et à la reconstruire, puis à l'ajouter à nouveau aux fichiers binaires incorporés.
Étonnamment, toutes les pièces nécessaires ne sont pas documentées ici, du moins pour Xcode 8.
Mon cas était un framework sur mesure faisant partie du même espace de travail. Il s'avère que sa construction était incorrecte. Basé sur la dernière réponse de jeremyhu à ce fil de discussion:
https://forums.developer.Apple.com/thread/4687
Je devais définir Dynamic Library Install Name Base
(DYLIB_INSTALL_NAME_BASE
) sous Build Settings
du Framework, puis le reconstruire. Il a été incorrectement paramétré sur $(LOCAL_LIBRARY_DIR)
et j'ai dû le modifier en @rpath
.
Ainsi, à l'étape de traitement du lien, il demandait à 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 path-to-App/Frameworks/fw.Framework/fw
En ce qui concerne tous les autres paramètres: ne doit être placé à 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 été obligé de configurer une phase supplémentaire Copy Files
, qui semble de toute façon intuitivement redondante par rapport à la phase d'intégration. En vérifiant la fin de la transcription de la construction, 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
[Plusieurs lignes verbeuses ont été supprimées, mais cela ressort clairement de la transcription simplifiée de l'interface utilisateur Xcode.]
J'ai toujours no idée de la raison pour laquelle Xcode a défini la valeur DYLIB_INSTALL_NAME_BASE
de manière incorrecte sur moi.
Si vous utilisez une structure tierce et utilisez Cocoapods en tant que gestionnaire de dépendance, essayez de créer un pod install
pour actualiser vos pods.
Cet incident se produisait dans une bibliothèque tierce que j'utilisais. Je suis donc heureux que la solution ci-dessus fonctionne pour moi. J'espère que cela fonctionnera pour vous!
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 cadre. Pour moi, le nettoyage a bien fonctionné ( Maj + Commande + K ). C'est peut-être parce que j'utilise la version bêta 5 de Xcode 7 et un iPhone 6 avec iOS 9 bêta, mais cela a fonctionné.
Si vous avez un module de développement Supprimer votre application du simulateur, installer à partir du module -> nettoyer -> réexécuter.
Dans mon cas, mon projet est écrit par objective-c et la bibliothèque contient des fichiers Swift. Alors j’ai changé "Toujours incorporer les bibliothèques standard Swift" dans l’onglet Paramètres de construction} de mon projet en Oui et c’est devenu totalement acceptable.
Après avoir essayé toutes les méthodes disponibles sur Internet et mes propres tentatives d’essais et erreurs 100 fois. Finalement, j'ai pu le résoudre. - Apeksha Sahu Il y a 6 minutes
Vers iTunes dans Mac -> Comptes -> Autoriser cet ordinateur - Apeksha Sahu Il y a 5 minutes
deuxième étape .... Allez au développeur dans les paramètres pour iPad et iPhone et réindexez avec des identifiants et effacez tout ce que vous voulez. Cela a fonctionné pour moi ........ ....... Après la réinstallation de la dernière version Mac OSHigh seria 10.13.15 à partir de la dernière version bêta de Mac OS, pour réinstaller la dernière version de Xcode, après la mise à jour de tous les certificats. etc etc etc ... autant de méthodes que vous pouvez penser que j'ai fait. -
La même chose s’est produite lorsque j’ai créé un nouveau schéma Configuration and Build.
Donc la solution pour moi était de courir
pod install
pour cette configuration nouvellement créée.
C'est une erreur d'exécution
L'erreur Library not loaded
avec @rpath
[À propos] indique que Xcode ne peut pas trouver le framework.
Vérifiez si le framework a été ajouté à General -> Embedded Binaries
Vérifiez si le @rpath
contient un chemin correct dans Build Settings -> Runpath Search Paths
.
Lire la suite ici
Les étapes ci-dessus ont résolu mes problèmes.
Essayez de changer l'indicateur ALWAYS_EMBED_Swift_STANDARD_LIBRARIES
(dans les versions antérieures de xcode: Embedded Content Contains Swift Code
) dans les paramètres de construction de NON à OUI.