Je viens de recevoir cette erreur lors de la soumission d'une application sur l'App Store.
Cela signifie-t-il que je dois définir ENABLE_BITCODE pour toutes les dépendances? J'ai essayé mais j'ai eu des erreurs disant que les dépendances n'étaient pas compatibles avec bitcode (ou quelque chose comme ça) ...
J'ai eu le même problème plus tôt ce matin. En fait, la réponse se trouve dans l'erreur: "Vérifiez que toutes les cibles d'une plate-forme ont une valeur cohérente pour les paramètres de génération ENABLE_BITCODE"
J'avais une cible (avec ENABLE_BITCODE définie sur NO), en utilisant plusieurs modules dont ENABLE_BITCODE était défini sur YES. Donc, tout ce que j'avais à faire, c'est de définir ENABLE_BITCODE sur OUI dans la cible de mon projet. Mais je suppose que vous avez le choix. Vous pouvez également définir ENABLE_BITCODE sur NO dans toutes les bibliothèques que vous utilisez.
Le correctif le plus simple et le plus courant:
Vous pouvez décocher "Inclure le bitcode" lors de la soumission de l'application via Xcode .
Si vous utilisez xcodebuild
, vous pouvez utiliser pass an exportOptionsPlist avec la valeur uploadBitcode
définie sur false. Dans mon cas, nous utilisons xctool
pour créer l'application et n'avons pas la capacité de transmettre une exportOptionsPlist
, nous avons donc dû supprimer le bitcode de tous nos frameworks.
Si quelqu'un utilise des cocoapodes et veut désactiver le bitcode pour leurs frameworks, vous pouvez simplement ajouter ce qui suit à votre podfile:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end
Via https://stackoverflow.com/a/32685434/1417922
Pour ajouter un peu plus de précisions sur ce qui se passe avec ce problème:
Il semble qu'Apple ait commencé à faire respecter cela hier. Si votre code binaire principal a le bitcode désactivé, mais que vous incluez une bibliothèque statique ou un framework avec Bitcode activé, la validation échouera. Cela va aussi dans l'autre sens: si votre binaire principal a le bitcode activé, mais que vous incluez une bibliothèque/framework avec du bitcode désactivé, la validation échouera.
J'avais quelques dépendances de Google Maps et d'Amazon qui rendaient non trivial de tout changer pour activer le bitcode, alors je l'ai tout simplement désactivé et j'ai supprimé le bitcode d'une bibliothèque statique que j'avais importée dans mon projet. Vous pouvez supprimer le bitcode de n'importe quel binaire en utilisant cette commande
$ xcrun bitcode_strip -r {Framework}.dylib -o tmp.dylib
$ mv tmp.dylib {Framework}.dylib
Bien que les solutions ci-dessus soient des solutions au problème, je ne pense pas que si le code binaire principal a désactivé le bitcode, tous les fichiers binaires inclus devraient également en avoir besoin. Le bitcode est juste un code IR que Apple peut utiliser pour l’amincissement d’applications - pourquoi ne le supprime-t-il pas simplement des autres fichiers binaires (ce qui, je suppose, est ce qu’ils avaient fait auparavant)? Cela n'a pas beaucoup de sens pour moi.
Sujet Apple https://forums.developer.Apple.com/thread/48071
Je viens de décocher "inclure le bitcode" et le téléchargement a commencé
Pour Carthage
carthage build --platform xxx
Ensuite, vous pouvez archiver et soumettre à l'Appstore avec succès
Nous obtenions la même erreur "Xcode - Erreur ITMS-90635 - Mach-O non valide dans le paquet - soumission à l'App Store" du vendredi 3 juin 2016 .. a utilisé les deux étapes mentionnées ci-dessous pour y parvenir.
Étape 1:
Ajout du code au fichier pod pour marquer 'ENABLE_BITCODE' = 'NO'
dans les pods
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['ENABLE_BITCODE'] = 'NO'
end
end
end
Étape 2:
Marqué 'ENABLE_BITCODE' = 'NO'
dans les modules du projet
Remarque: J'ai essayé de marquer 'ENABLE_BITCODE' = 'YES'
dans les pods et dans mon projet aussi, mais nous utilisons twillio Framework pour les appels qui ont un indicateur -read_only_relocs
qui ne permet pas la compilation avec 'ENABLE_BITCODE' = 'YES'
. Donc, si votre application n'utilise aucun de ces frameworks avec -read_only_relocs
, vous pouvez continuer à créer 'ENABLE_BITCODE' = 'YES'
car ce sera bon pour votre application.
Pour ceux qui rencontrent une erreur de construction après avoir défini "Activer le code binaire" sur Oui . Je dois mettre à jour toute la bibliothèque.Mais la partie la plus facile est d’utiliser Cocoapods.So, mettez à jour tous vos projets de pod: ) ou tous
Définissez ensuite Enable BitCode sur "No" avant d’archiver.
Puis Archive >> Upload >> Il passera cette erreur.
À votre santé.
J'ai eu le même problème avec le projet "ENABLE_BITCODE = YES" et les dépendances "ENABLE_BITCODE = YES" sur mon CI avec Xcode 7.3 . La solution mettait à jour Xcode vers la dernière version disponible (7.3.1)