J'ai mis à jour Xcode avec la dernière version et maintenant, lorsque j'essaie de compiler le projet, l'erreur "Signature de bitcode non valide" s'affiche, cependant, le bitcode de mon projet est désactivé. Comment puis-je le réparer? Que dois-je changer pour signer mon bitcode correctement?
Mon Podfile:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
target 'MyProjectName' do
pod 'Realm'
pod 'CorePlot'
pod 'GoogleMaps'
end
J'ai déjà vérifié, tout va bien avec ça.
J'ai rencontré cette erreur, mais cela ne s'est produit que lors de la création d'un iPad iOS 10.3 (alors que je travaillais sur un iPhone iOS 10.3 et un iPad iOS 11.0, ainsi que sur tous les simulateurs iOS 10.3 et 11.0). Grâce à un processus d'élimination douloureux (et à la création d'un nouveau projet à partir de zéro), j'ai constaté que mes Cocoapod n'étaient pas en cause, pas plus que mes paramètres de signature de code, ni mon AppExtension, ni mes tests, ni mon "build pour architecture active uniquement" paramètre, ni aucun paramètre de construction lié au terme 'bitcode'.
Dans ma configuration, un projet C++ Xcode était imbriqué dans mon projet principal Swift/iOS Xcode. Etant donné qu'elle n'a jamais été conçue spécifiquement pour être utilisée dans iOS, la "cible de déploiement iOS" n'a jamais été définie (elle a été laissée sur "par défaut"). En le réglant explicitement à 10.3, cela a fonctionné sans plainte.
Paramètres de projet de l'application Nested C++ (définissez la cible de déploiement iOS sur la version iOS la plus basse prise en charge):
Paramètres de cible de l'application Nested C++ (pour référence):
Si vous utilisez un module, vérifiez la version de toutes les bibliothèques. Certaines bibliothèques ne prennent peut-être pas en charge la nouvelle version. Vous devez mettre à jour les fichiers de module pour cette bibliothèque.
Dans mon cas, j'essayais de créer un appareil avec une version iOS inférieure à la cible de déploiement.
Dans mon cas, un problème est survenu car j'utilisais une bibliothèque statique tierce avec des fichiers différents pour chaque architecture.
J'ai résolu le problème en supprimant les fichiers binaires d'architectures non valides ..__ Au lieu de cela, j'ai ajouté un fichier binaire multi-Arch FAT pour la bibliothèque statique tierce.
L'espoir aide
Ce genre de problème est apparu lorsque j'ai lié un nouveau projet de bibliothèque statique à mon espace de travail. Afin de le résoudre, j'ai essayé de définir NO mais pas de chance pour les paramètres Build Active Architecture Only et Bitcode de la bibliothèque. Ensuite, j'ai compris que la cible de déploiement de la bibliothèque était définie sur 11.0, car Xcode définissait la dernière valeur pour tous les nouveaux projets. Après avoir réglé le paramètre sur 5.0, le problème a été résolu.
J'ai trouvé que mon problème concernait l'utilisation de 'Modules'.
Vient de désactiver les modules (j'ai dû mettre à jour certains fichiers d'en-tête), mais cela a résolu mon problème.
Pour résoudre ce problème, la plupart des réponses recommandent une solution de contournement selon laquelle vous nettoyez votre espace de travail/projet Xcode, fermez Xcode, supprimez votre dossier Derived Data
(conservé par défaut dans le répertoire racine de votre projet), puis rouvrez enfin votre projet.
Cependant, les étapes ci-dessus peuvent ne pas fonctionner pour vous. Ceci est un indice que votre structure de projet est en erreur.
Lorsque la représentation intermédiaire en bitcode de votre projet a été publiée avec iOS 9.0, il l'a été sous réserve que votre projet entier, y compris les dépendances, soit totalement d'accord pour utiliser ou non le bitcode. D'après mon expérience, il est essentiel de travailler avec tous vos Pods
et Libraries/Frameworks
inclus et de s'assurer qu'ils utilisent tous le même paramètre; soit oui ou non . Par défaut, cette sélection est oui .
Si une dépendance unique ne correspond pas au paramètre de code binaire souhaité, cette erreur peut être générée.
Lors de la vérification de vos dépendances et de votre projet global, il est important de noter qu'il existe un paramètre Use Bitcode
pour les paramètres les deux / Projet et Cible. Veillez donc à vérifier les deux perspectives des paramètres de construction.
Dans mon cas, le widget inclus dans le projet était à l'origine de l'erreur de bitcode.
J'ai changé mon fichier pod à partir de ceci:
target "App" do
pod 'A'
pod 'B'
end
target "App Widget" do
pod 'A'
end
pour ça:
target "App" do
pod 'A'
pod 'B'
target "App Widget" do
pod 'A'
end
end
Dans mon cas, la solution consistait à supprimer une bibliothèque c ++.
Cette solution fonctionne pour moi. Commencez par essayer de supprimer tout le pod en utilisant la commande de terminal pod deintegrate , puis réinstallez-le en utilisant la commande de terminal pod install .
Dans mon cas, j'utilise Cordova Project . Lors de sa construction avec Xcode, le problème était identique et résolu en supprimant et en ajoutant la plate-forme IOS.
cordova platform remove ios
cordova platform add ios
Si vous utilisez des cabosses de cacao, faites "pod update"
J'ajoutais une bibliothèque statique. J'ai créé le fat binary de la même bibliothèque incluant toutes les architectures et inclus dans mon projet. Cela a résolu mon problème
Cela peut également se produire lors de la construction du simulateur si vous incluez un cadre construit pour ARM uniquement (et je suppose aussi l'inverse).