L'impostazione Xcode 7 e ENABLE_BITCODE = YES non funziona


96

Ho seguito diversi thread sulla nuova impostazione ENABLE_BITCODE in Xcode, ho anche provato il più possibile (ammesso di non essere un xcode pro) ma non riesco ancora a compilare il progetto per l'uso sul mio telefono di prova?

La mia app funziona bene sul simulatore ma non posso distribuirla sul mio iPhone per i test. Su quest'ultimo ho appena installato iOS 9 beta.

Ora, ecco il messaggio di errore che ricevo. Sembra che l'impostazione non influisca sulla libreria PARSE.com, che fa parte del mio progetto? Come posso fare in modo che il mio progetto venga distribuito sul mio telefono? Grazie per qualsiasi consiglio.

    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)

1
Sei sicuro di aver selezionato Enable Bitcodeper NOcontro accumulazione config si sta utilizzando (ad esempio DEBUG)? Puoi verificarlo in project-> target-> build settings-> search enable bitcode-> set NOin DEBUG (bene ricordare di provare ad aggiornare le librerie prima del rilascio di prova, forse conterrà già bitcode). Quindi Edit Scheme-> Run-> controlla se hai DEBUGconfig atm.
Vive

1
BENE! sì e no. Non l'ho impostato sugli obiettivi del POD, quello era il mio errore. Il tuo suggerimento mi ha portato lì. Grazie
DirkLX

Bello sentirlo :) lo posterò come risposta in quanto potrebbe essere utile per altre persone.
Vive

Perché dobbiamo cambiare Bitcode? In precedenza non è necessario aggiornarne il valore. Qualche motivo logico? Grazie
msmq

Ha fatto tutto ma l'app si blocca ancora sul dispositivo con lo stesso errore. Sto usando iOS 9.1. Per favore aiuto!
Md Rais

Risposte:


133

Sei sicuro di aver selezionato Enable Bitcodeper NOcontro accumulazione config si sta utilizzando (ad esempio DEBUG)? Puoi verificarlo in project-> target-> build settings-> search enable bitcode-> set NOin DEBUG(bene ricordare di provare ad aggiornare le librerie prima del rilascio di prova, forse conterrà già bitcode). Quindi Modifica schema -> Esegui -> controlla se hai DEBUGconfig atm.

inserisci qui la descrizione dell'immagine


1
@Zorayr Come hai aggiunto l'immagine al mio post: dovresti prima controllare le impostazioni di build dell'app e modificare questo flag nelle impostazioni di build dell'app. Solo se non aiuta, fai lo stesso con i pod.
Vive

3
L'applicazione verrà accettata nell'App Store se Enable Bitcodeè impostato su NO?
Ne AS

@ NEAS Sì. Attualmente, non è necessario abilitare il bitcode.
Vive

Dovresti disabilitare il bitcode per tutti i tuoi pod
Vadim Kurochkin

53

Nota che per i progetti che utilizzano CocoaPods dovresti impostare ENABLE_BITCODE = NOsia il progetto che le destinazioni del progetto contenitore Pods.

Questo errore

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)

è stato risolto da:

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


Apple rifiuta l'app se la inviamo con l'opzione Abilita Bitcode = NO?
Ganesh Guturi

@ G.Ganesh si prega di inviare come domanda separata. La politica varia tra tvOS e watchOS, dove la risposta è SI. iOS la risposta è attualmente no, in futuro SI.
Maxim Veksler

@GaneshGuturi Attualmente sì, ma probabilmente Apple lo taglierà ad un certo punto in futuro. Ulteriori spiegazioni ad esempio qui: stackoverflow.com/a/31207170/849616 .
Vive

17

Avevo anche affrontato lo stesso problema in Xcode7. Soluzione per questo:

  • vai a PROJECT
  • costruire Settings
  • Selezionare All Tab
  • digita la ricerca Enable Bitcode
  • Update Flaga No(che sarà sotto il tuo progetto (seconda colonna))

15

Ho avuto un problema simile con la libreria di pod di cacao di GoogleAnalytics e la libreria non si stava compilando per iPhone 6 con iOS 8.

La mia soluzione è stata quella di passare a NO flag "Enable Bitcode" nella destinazione del progetto dell'applicazione - non nel progetto Pods.


Questo è quello che ho detto nel commento alla mia risposta. Per provare a farlo sulle impostazioni del progetto, se e solo se non funziona, passa al progetto pod.
Vive

La commutazione della destinazione e del progetto per creare le impostazioni bitcode NO non funziona per l'ARCHIVIAZIONE. Funziona a trovare per le build di Sim. XCODE 7.0.1
ort11

11

Se il tuo codice bit non viene visualizzato, seleziona Tutto. Quando xcode seleziona Basic, l'opzione Bitcode non viene visualizzata.

inserisci qui la descrizione dell'immagine

Quando selezioni Tutto puoi vedere Bitcode. Quindi impostare No per la configurazione degli annunci inserisci qui la descrizione dell'immagine


10

L'ho appena impostato per il mio progetto.

MyProjectTarget -> Impostazioni build -> Abilita Bitcode = NO


1
La domanda verrà rifiutata nell'App Store?
Ne AS

5

Come tutti hanno detto, la risposta è impostata Enable Bitcodesu Nonelle impostazioni di build , ma penso che alcuni di voi potrebbero essere interessati a farlo dalla riga di comando .

Il mio progetto Xcode è stato generato da Unity e non voglio alcun intervento manuale sulle impostazioni del progetto Xcode. Forse c'è un modo migliore o uno strumento che può modificare le impostazioni di costruzione un po 'come il modo in cui PlistBuddy ti consente di aggiornare i valori nei plistfile. Non conosco nessuno strumento che lo faccia per le impostazioni di build, quindi sto usando sed .

sed: esegue le sostituzioni in base alle espressioni regolari.

Come impostare Enable Bitcodea Noda linea di comando:

Qui, il nome del mio progetto è Unity-iPhonequindi eseguo il seguente comando dalla radice del mio progetto Xcode:

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

-e - specifica i comandi sed da eseguire
-i - modifica i file sul posto, eseguendo gli script separatamente per ogni file

Rimuovi -ise vuoi solo un'anteprima di ciò che fa;)

Nota che tutte le tue configurazioni di build verranno modificate utilizzando questo comando, la riga è ENABLE_BITCODE = YES;apparsa 6 volte in my project.pbxproj.

Ora i miei passaggi di costruzione possono essere completamente automatizzati mentre Fastlane si occupa del resto!


3

Se non trovi il flag enable_bitcode. Fai clic sulla scheda "Tutto" nella barra degli strumenti superiore accanto alla barra di ricerca. inserisci qui la descrizione dell'immagine


Per favore aggiungi del codice per spiegare meglio la tua risposta.
Usman Maqbool

1

prova questo comando nel terminale se non sei in grado di modificare le impostazioni BITCODE all'interno del progetto,

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.