Xcode 7 et ENABLE_BITCODE = YES le réglage ne fonctionne pas

96

J'ai suivi plusieurs discussions autour du nouveau paramètre ENABLE_BITCODE dans Xcode, j'ai également essayé autant que possible (admis que je ne suis pas un pro de xcode) mais je n'arrive toujours pas à compiler le projet pour une utilisation sur mon téléphone de test?

Mon application fonctionne correctement sur le simulateur, mais je ne peux pas la déployer sur mon iPhone à des fins de test. Sur ce dernier, je viens d'installer iOS 9 beta.

Maintenant, voici le message d'erreur que je reçois. Il semble que le paramètre n'ait pas d'impact sur la bibliothèque PARSE.com, qui fait partie de mon projet? Comment puis-je faire déployer mon projet sur mon téléphone? Merci pour tout conseil.

    Ld /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-  bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods/Parse.framework/Parse normal armv7
cd /Users/xxxxxx/Documents/DigitalTempusDev/graffiti/Pods
export IPHONEOS_DEPLOYMENT_TARGET=8.0
export PATH="/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch armv7 -dynamiclib -isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk -L/Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods -L/Users/xxxxxx/Documents/DigitalTempusDev/graffiti/Pods/Parse -F/Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods -filelist /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Intermediates/Pods.build/Debug-iphoneos/Pods-Parse.build/Objects-normal/armv7/Parse.LinkFileList -install_name @rpath/Parse.framework/Parse -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -miphoneos-version-min=8.0 -dead_strip -fembed-bitcode-marker -ObjC -lParseLib -lz -framework AudioToolbox -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -weak_framework Accounts -weak_framework Social -ObjC -fobjc-arc -fobjc-link-runtime -framework AudioToolbox -framework Bolts -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework Foundation -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -single_module -compatibility_version 1 -current_version 1 -Xlinker -dependency_info -Xlinker /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Intermediates/Pods.build/Debug-iphoneos/Pods-Parse.build/Objects-normal/armv7/Parse_dependency_info.dat -o /Users/xxxxxx/Library/Developer/Xcode/DerivedData/graffiti-bnmizxueojwiqcbbnsvilljhosrw/Build/Products/Debug-iphoneos/Pods/Parse.framework/Parse

---
ld: warning: -weak_framework is treated as -framework when used with -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES). Weak linking may still happen based on availability mark-up in headers
ld: warning: -weak_framework is treated as -framework when used with -bitcode_bundle (Xcode setting ENABLE_BITCODE=YES). Weak linking may still happen based on availability mark-up in headers
ld: '/Users/xxxxxx/Documents/DigitalTempusDev/graffiti/Pods/Parse/libParseLib.a(PFSQLiteDatabase.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
DirkLX
la source
1
Etes-vous sûr que vous avez choisi Enable Bitcodede NOcontre-construire la configuration que vous utilisez (par exemple DEBUG)? Vous pouvez le vérifier dans project-> target-> build settings-> search enable bitcode-> set NOdans DEBUG (il est bon de se rappeler d'essayer de mettre à jour les bibliothèques avant la version de test, peut-être qu'il contiendra déjà du bitcode). Ensuite Edit Scheme-> Run-> vérifiez si vous avez DEBUGconfig atm.
Vive
1
BIEN! Oui et non. Je ne l'ai pas défini sur les cibles POD, c'était ma faute. Votre indice m'a amené là-bas. Merci
DirkLX
Super de l'entendre :) le postera comme réponse car cela peut être utile pour d'autres personnes.
Vive le
Pourquoi devons-nous changer Bitcode? Auparavant, nous n'avions pas besoin de mettre à jour sa valeur. Une raison logique? Merci
msmq
Tout a fait, mais l'application s'est toujours bloquée sur l'appareil avec la même erreur. J'utilise iOS 9.1. Veuillez aider!
Md Rais

Réponses:

133

Etes-vous sûr que vous avez choisi Enable Bitcodede NOcontre-construire la configuration que vous utilisez (par exemple DEBUG)? Vous pouvez le vérifier dans project-> target-> build settings-> search enable bitcode-> set NOin DEBUG(bon de se rappeler d'essayer de mettre à jour les bibliothèques avant la version de test, peut-être qu'il contiendra déjà du bitcode). Puis Modifier le schéma -> Exécuter -> vérifier si vous avez DEBUGconfiguré atm.

entrez la description de l'image ici

Vive
la source
1
@Zorayr Comme vous avez ajouté une image à mon message: vous devez d'abord vérifier les paramètres de création de votre application et modifier cet indicateur dans les paramètres de création de l'application. Seulement si cela n'aide pas, faites de même avec les pods.
Vive
3
L'application sera-t-elle acceptée dans l'App Store si le Enable Bitcodeest défini sur NO?
Ne AS
@NeAS Oui. Actuellement, il n'est pas nécessaire d'activer le bitcode.
Vive
Vous devez désactiver le bitcode pour tous vos pods
Vadim Kurochkin
53

Notez que pour les projets utilisant CocoaPods, vous devez définir ENABLE_BITCODE = NO à la fois le projet et les cibles de projet de conteneur Pods.

Cette erreur

Ld /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos/ParseTwitterUtils.framework/ParseTwitterUtils normal arm64
    cd /Users/maximveksler/Developer/ParseUI-iOS/Pods
    export IPHONEOS_DEPLOYMENT_TARGET=9.0
    export PATH="/Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
    /Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 -dynamiclib -isysroot /Applications/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk -L/Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos -L/Users/maximveksler/Developer/ParseUI-iOS/Pods/ParseTwitterUtils -F/Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos -filelist /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Intermediates/Pods.build/Debug-iphoneos/ParseTwitterUtils.build/Objects-normal/arm64/ParseTwitterUtils.LinkFileList -install_name @rpath/ParseTwitterUtils.framework/ParseTwitterUtils -Xlinker -rpath -Xlinker @executable_path/Frameworks -Xlinker -rpath -Xlinker @loader_path/Frameworks -miphoneos-version-min=9.0 -dead_strip -fembed-bitcode-marker -ObjC -lParseTwitterUtilsLib -lsqlite3 -lz -framework AudioToolbox -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -weak_framework Accounts -weak_framework Social -fobjc-arc -fobjc-link-runtime -framework AudioToolbox -framework Bolts -framework CFNetwork -framework CoreGraphics -framework CoreLocation -framework Foundation -framework Parse -framework QuartzCore -framework Security -framework StoreKit -framework SystemConfiguration -single_module -compatibility_version 1 -current_version 1.8.1 -Xlinker -dependency_info -Xlinker /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Intermediates/Pods.build/Debug-iphoneos/ParseTwitterUtils.build/Objects-normal/arm64/ParseTwitterUtils_dependency_info.dat -o /Users/maximveksler/Library/Developer/Xcode/DerivedData/ParseUI-gwtgmlgbpobjfjfjgkiwdahqveos/Build/Products/Debug-iphoneos/ParseTwitterUtils.framework/ParseTwitterUtils

ld: '/Users/maximveksler/Developer/ParseUI-iOS/Pods/ParseTwitterUtils/libParseTwitterUtilsLib.a(PFTwitterAuthenticationProvider.o)' does not contain bitcode. You must rebuild it with bitcode enabled (Xcode setting ENABLE_BITCODE), obtain an updated library from the vendor, or disable bitcode for this target. for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

a été résolu par:

entrez la description de l'image ici

entrez la description de l'image ici

Maxim Veksler
la source
Apple rejette-t-il l'application si nous la soumettons avec l'option Activer Bitcode = NON?
Ganesh Guturi
@ G.Ganesh s'il vous plaît postez comme une question distincte. La politique varie entre tvOS et watchOS où la réponse est OUI. iOS la réponse est actuellement non, futur OUI.
Maxim Veksler
@GaneshGuturi Actuellement oui, mais probablement Apple le coupera à un moment donné dans le futur. Plus d'explications, par exemple ici: stackoverflow.com/a/31207170/849616 .
Vive
17

J'avais également rencontré le même problème dans Xcode7. Solution pour cela:

  • aller à PROJECT
  • construire Settings
  • sélectionner All Tab
  • tapez dans la recherche Enable Bitcode
  • Update Flagà No(qui sera en dessous de votre projet (deuxième colonne))
Harshal Wani
la source
15

J'ai eu un problème similaire avec la bibliothèque de gousses de cacao GoogleAnalytics et la bibliothèque ne se compilait pas pour iPhone 6 avec iOS 8.

Ma solution était de passer à NON le drapeau "Activer Bitcode" dans la cible du projet d'application - pas dans le projet Pods.

ArturOlszak
la source
C'est ce que j'ai dit dans le commentaire de ma réponse. Pour essayer de le faire sur les paramètres du projet, si et seulement si cela ne fonctionne pas, passez au projet de pod.
Vive le
Le basculement de la cible et du projet pour générer les paramètres bitcode NO ne fonctionne pas pour l'ARCHIVAGE. Fonctionne-t-elle pour les versions Sim. XCODE 7.0.1
ort11
11

Si votre Bitcode ne s'affiche pas, veuillez sélectionner Tout. Lorsque xcode sélectionnez Basic, votre option Bitcode ne s'affiche pas.

entrez la description de l'image ici

Lorsque vous sélectionnez Tout, vous pouvez voir Bitcode. Ensuite, définissez Non pour la configuration des annonces entrez la description de l'image ici

éthemsulane
la source
10

Je viens de le définir pour mon projet.

MyProjectTarget -> Paramètres de construction -> Activer Bitcode = NON

Alexandre
la source
1
La candidature sera-t-elle rejetée dans l'App Store?
Ne AS
5

Comme tout le monde dit, la réponse est définie Enable Bitcodeà Nodans les paramètres de construction , mais je pense que certains d' entre vous pourraient être intéressés à le faire de la ligne de commande .

Mon projet Xcode est généré par Unity et je ne souhaite aucune intervention manuelle sur les paramètres du projet Xcode. Peut-être qu'il existe un meilleur moyen ou un outil qui peut modifier les paramètres de construction un peu comme la façon dont PlistBuddy vous permet de mettre à jour les valeurs dans les plistfichiers. Je ne connais aucun outil qui fasse cela pour les paramètres de construction, donc j'utilise sed .

sed: exécutez des remplacements basés sur des expressions régulières.

Comment régler Enable BitcodesurNo partir de la ligne de commande:

Ici, le nom de mon projet est Unity-iPhonedonc j'exécute la commande suivante à partir de la racine de mon projet Xcode:

sed -i -e 's/ENABLE_BITCODE = YES;/ENABLE_BITCODE = NO;/g' \ 
Unity-iPhone.xcodeproj/project.pbxproj

-e - spécifier les commandes sed à exécuter
-i - éditer les fichiers sur place, exécuter les scripts séparément pour chaque fichier

Retirer -i si vous voulez seulement un aperçu de ce qu'il fait;)

Notez que toutes vos configurations de construction seront modifiées à l'aide de cette commande, la ligne ENABLE_BITCODE = YES;est apparue 6 fois dans monproject.pbxproj .

Maintenant, mes étapes de construction peuvent être entièrement automatisées car Fastlane s'occupe du reste!

GabLeRoux
la source
3

Si vous ne trouvez pas l'indicateur enable_bitcode. Cliquez sur l'onglet "Tous" dans la barre d'outils supérieure à côté de la barre de recherche. entrez la description de l'image ici

haroon jamil
la source
Veuillez ajouter du code pour mieux expliquer votre réponse.
Usman Maqbool
1

essayez cette commande dans le terminal si vous ne parvenez pas à modifier les paramètres BITCODE avec le projet,

xcodebuild -target "cible" -configuration "configuration" ENABLE_BITCODE = NO

Jaxs_ios
la source