"dyld: Library not loaded, reason: image not found" ou comment embarquer une librairie à lien dynamique / framework avec iOS 8+
Le problème :
Au cours du développement d'une application, j'ai eu besoin d'ajouter un sous-projet produisant un "Framework" (autrement dit une dépendance installée via Carthage).Lors de l'execution sous l'émulateur, tout fonctionna très bien.
Mais en lançant l'application sur un appareil physique, il apparut un message proche de celui-ci :
dyld: Library not loaded: @rpath/Machin.framework/Machin Referenced from: /var/mobile/Applications/FA6...B6/MachinApp.app/MachinApp
Reason: image not found
Que faire dans ce cas ?
Dans l'onglet "cible" du projet dépendant, ajouter le framework via la liste "Embedded Binairies".
Voici une capture d'écran montrant la structure du projet et la fenêtre de dialogue permettant d'ajouter la dépendance binaire.
Pour référence, le lien StackOverflow : https://stackoverflow.com/questions/24333981/ios-app-with-framework-crashed-on-device-dyld-library-not-loaded-xcode-6-beta
Et si cela ne fonctionne toujours pas ?
Dans ce cas, il convient de vérifier si le Framework s'installe au bon endroit lors de la construction du projet cible.
En effet, un Framework qui venait à être copié au mauvais endroit sera, de facto, impossible à charger.
Pour savoir à quel endroit votre projet cible s'attend à trouver ses dépendances, il faut executer la commande suivante :
otool -L {{chemin vers le fichier exécutable}}
Une fois la liste des emplacements affichée, il ne reste plus qu'à vérifier que le chemin d'installation du Framework correspond bien dans le project de la dépendance.
Commentaires
Enregistrer un commentaire