A configuração do Xcode 7 e ENABLE_BITCODE = YES não funciona


96

Eu segui vários tópicos em torno da nova configuração ENABLE_BITCODE no Xcode, também tentei o máximo que pude (admiti que não sou um profissional do xcode), mas ainda não consigo compilar o projeto para uso no meu telefone de teste?

Meu aplicativo funciona bem no simulador, mas não consigo implantá-lo no meu iPhone para teste. No último, acabei de instalar o iOS 9 beta.

Agora, aqui está a mensagem de erro que recebo. Parece que a configuração não impacta a lib do PARSE.com, que faz parte do meu projeto? Como posso fazer com que meu projeto seja implantado em meu telefone? Obrigado por qualquer conselho.

    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
Tem certeza de que selecionou Enable Bitcodea NOconfiguração de compilação que está usando (por exemplo DEBUG)? Você pode verificar em projeto-> destino-> configurações de compilação-> pesquisa enable bitcode-> definir NOem DEBUG (bom lembrar de tentar atualizar libs antes do lançamento de teste, talvez já contenha bitcode). Então Edit Scheme-> Run-> verifique se você DEBUGconfigurou o atm.
Vive

1
BEM! sim e não. Eu não o coloquei nos alvos POD, esse foi o meu esquecimento. Sua dica me levou até lá. Obrigado
DirkLX

Ótimo saber :) postarei como uma resposta, pois pode ser útil para outras pessoas.
Vive

Por que precisamos mudar o Bitcode? Anteriormente, não precisamos atualizar seu valor. Alguma razão lógica? Obrigado
msmq

Fiz tudo, mas ainda assim o aplicativo travou no dispositivo com o mesmo erro. Estou usando o iOS 9.1. Por favor ajude!
Md Rais

Respostas:


133

Tem certeza de que selecionou Enable Bitcodea NOconfiguração de compilação que está usando (por exemplo DEBUG)? Você pode verificar em projeto-> destino-> configurações de compilação-> pesquisa enable bitcode-> definir NOem DEBUG(bom lembrar de tentar atualizar libs antes do lançamento de teste, talvez já contenha bitcode). Em seguida, Editar Esquema -> Executar -> verifique se você tem o DEBUGconfig atm.

insira a descrição da imagem aqui


1
@Zorayr Como você adicionou imagem ao meu post: você deve primeiro verificar as configurações de compilação do aplicativo e alterar este sinalizador nas configurações de compilação do aplicativo. Somente se não ajudar, faça o mesmo com os pods.
Vive

3
O aplicativo será aceito na App store se Enable Bitcodeestiver definido como NO?
Ne AS

@NeAS Sim. Atualmente, não há requisitos para habilitar o bitcode.
Vive de

Você deve desativar o bitcode para todos os seus pods
Vadim Kurochkin

53

Observe que, para projetos que usam CocoaPods, você deve definir ENABLE_BITCODE = NOos destinos do projeto e do contêiner de Pods.

Esse erro

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)

foi resolvido por:

insira a descrição da imagem aqui

insira a descrição da imagem aqui


A Apple rejeita o aplicativo se o enviarmos com a opção Ativar código de bits = NÃO?
Ganesh Guturi,

@ G.Ganesh poste como uma pergunta separada. A política varia entre tvOS e watchOS, onde a resposta é SIM. iOS a resposta atualmente é não, futuro SIM.
Maxim Veksler,

@GaneshGuturi Atualmente sim, mas provavelmente a Apple irá cortá-lo em algum momento no futuro. Mais explicações, por exemplo, aqui: stackoverflow.com/a/31207170/849616 .
Vive de

17

Eu também havia enfrentado o mesmo problema no Xcode7. Solução para isso:

  • vamos para PROJECT
  • Construir Settings
  • selecionar All Tab
  • digite na pesquisa Enable Bitcode
  • Update Flagpara No(que estará abaixo do seu projeto (segunda coluna))

15

Tive um problema semelhante com a biblioteca de pods de cacau do GoogleAnalytics e a biblioteca não estava compilando para o iPhone 6 com iOS 8.

Minha solução foi mudar para NÃO a sinalização "Ativar código de bits" no destino do projeto do aplicativo - não no projeto de pods.


Foi o que disse no comentário à minha resposta. Para tentar fazer isso nas configurações do projeto, se e somente se isso não funcionar, mude para o projeto pod.
Vive,

Alternar o destino e o projeto para construir o código de bits das configurações NÃO não funciona para ARQUIVAMENTO. Funciona para encontrar construções de Sims. XCODE 7.0.1
ort11 01 de

11

Se o seu código de bits não estiver sendo exibido, selecione Todos. Quando xcode seleciona Básico, sua opção de código de bits não é exibida.

insira a descrição da imagem aqui

Ao selecionar Tudo, você pode ver o código de bits. Depois, defina Não para configuração de anúncios insira a descrição da imagem aqui


10

Acabei de configurá-lo para o meu projeto.

MyProjectTarget -> Configurações de compilação -> Ativar código de bits = NÃO


1
O aplicativo será rejeitado na App Store?
Ne AS

5

Como todos disseram, a resposta é definida Enable Bitcodecomo Nonas configurações de construção , mas acho que alguns de vocês podem estar interessados ​​em fazer isso na linha de comando .

Meu projeto Xcode está sendo gerado pelo Unity e não quero nenhuma intervenção manual nas configurações do projeto Xcode. Talvez haja uma maneira melhor ou uma ferramenta que pode editar as configurações de compilação um pouco como o PlistBuddy permite atualizar valores em plistarquivos. Não conheço nenhuma ferramenta que faça isso para configurações de compilação, então estou usando o sed .

sed: executa substituições com base em expressões regulares.

Como definir Enable Bitcodea Nopartir da linha de comando:

Aqui, meu nome de projeto é, Unity-iPhoneportanto, executo o seguinte comando na raiz do meu projeto Xcode:

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

-e - especifica comandos sed para executar
-i - edita arquivos no local, executando scripts separadamente para cada arquivo

Remova -ise quiser apenas uma prévia do que ele faz;)

Observe que todas as suas configurações de construção serão alteradas usando este comando, a linha ENABLE_BITCODE = YES;apareceu 6 vezes no meuproject.pbxproj .

Agora minhas etapas de construção podem ser totalmente automatizadas, já que o fastlane cuida do resto!


3

Se você não encontrar o sinalizador enable_bitcode. Clique na guia "Todos" na barra de ferramentas superior ao lado da barra de pesquisa. insira a descrição da imagem aqui


Adicione algum código para explicar melhor sua resposta.
Usman Maqbool

1

tente este comando no terminal se você não for capaz de alterar as configurações de BITCODE dentro do projeto,

xcodebuild -target "target" -configuration "configuração" ENABLE_BITCODE = NO

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.