J'ai récemment mis à jour Xcode vers la version 7.1, qui comprenait Swift 2.1. J'ai installé Swift 2.1 sans aucun problème. Après avoir tenté d'exécuter mon projet, j'ai réalisé que je nécessaire pour récupérer la dernière version de Realm, car la version précédente ne supportait pas Swift 2.1. J'ai supprimé les anciens frameworks et importé Realm 0.96.2. À chaque fois que je lance, j'obtiens maintenant cette erreur:
bash: /Users/userName/Library/Developer/Xcode/DerivedData/appName-ghiroqitgsbvfhdqxsscyokyoouz/Build/Products/Debug-iphoneos/appName.app/Frameworks/Realm.framework/strip-frameworks.sh: No such file or directory
Je soupçonnais que le problème venait du script requis si vous souhaitez soumettre votre application sur l'App Store, j'ai donc supprimé la phase d'exécution de script, j'en ai ajouté une nouvelle et j'ai copié le script à partir du site de documentation de Realm:
bash "${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/Realm.framework/strip-frameworks.sh"
Je pensais que cela réglerait le problème, mais ce n'est pas le cas. J'ai ensuite pensé que le problème pouvait être dans les fichiers Realm.framework ou RealmSwift.framework, alors je les ai supprimés et réimportés (juste au cas où j'aurais gâché quelque chose). Rien n'a changé. Est-ce que quelqu'un sait s'il existe une solution à cette erreur?
Merci! -CodeIt
D'après le message d'erreur, il semble que vous n'avez pas ajouté Realm.framework
Et RealmSwift.framework
Au volet Binaires intégrés, que vous trouverez dans le Général onglet de votre projet, comme illustré ci-dessous:
Pour une validation supplémentaire, vous pouvez consulter l'onglet Build Phases. Il devrait ressembler à ci-dessous:
Remarque: assurez-vous que la phase d'exécution du script vient après la phase Embed Frameworks .
Les infrastructures vendues ne sont pas seulement des exécutables uniques, mais en fait des fichiers binaires FAT qui sont des archives d'exécutables liés sur différentes architectures. Cela inclut les tranches d'architecture pour arm64
Et armv7
, Qui sont nécessaires pour le déploiement sur le téléphone ainsi que i386
Et x86_64
Qui sont nécessaires pour exécuter l'application dans le simulateur.
La principale responsabilité du script strip-frameworks.sh
Consiste à supprimer les tranches inutiles. Cela réduit la taille finale du package et est nécessaire pour le déploiement de l'AppStore car iTunes Connect rejette les applications avec des architectures de simulateur.
Le script fonctionne sur la base du paramètre de génération VALID_ARCHS
. Parce que cela modifie l'exécutable signé du framework, il doit également prendre soin de la signature de code. Depuis l'introduction du bitcode, il a également été soumis à un post-traitement supplémentaire. Il extrait les fichiers *.bcsymbolmap
Inclus du bundle de framework et les place dans le chemin correct dans *.xcarchive
.
Le rubrique FAQ sur Bitcode de PSPDFKit a une bonne explication sur ce que sont BCSymbolMaps:
Un BCSymbolMap ressemble beaucoup à un dSYM pour bitcode. Xcode le construit dans le cadre de la création du binaire de l'application, ainsi que pour chaque cadre dynamique. Il est nécessaire pour re-symboliser les noms de fonction/méthode pour comprendre les planteurs.