biblioteca do iOS para BitCode




ios8 xcode7-beta2 (4)

O que você precisa é -fembed-bitcode. Quando ENABLE_BITCODE está ativado, o Xcode cria com -fembed-bitcode-marker para construções regulares e com -fembed-bitcode para construções de arquivo morto. Uma opção simplesmente "marca" onde o código de bits estaria no binário após uma compilação do arquivo morto e impõe as novas regras de código de bits, enquanto a outra efetua a geração completa do código de bit, o que provavelmente é mais lento e, portanto, não é ativado em todos os tipos de compilação .

O guia da Syo Ikeda para lidar com o BITCODE também pode ajudá-lo:

Você pode encontrar o deck completo aqui.

Recentemente, baixei o Xcode 7 beta e o Xcode reclama que algumas das minhas bibliotecas C não foram compiladas no BitCode. Como eu diria à Clang para produzir o BitCode compatível com o iOS? Vi respostas semelhantes no stackoverflow, mas não sei se elas se aplicam à produção de bibliotecas BitCode para iOS.

Editar:

Estou usando a configuração correta, -fembed-bitcode, mas quando tento arquivar, recebo o erro: ld: aviso: ignorando o arquivo XXXX / XXXX, o arquivo foi criado para o arquivo que não é a arquitetura que está sendo vinculada (arm64). Quando eu uso -fembed-bitcode-marker, posso arquivar, mas recebo o erro: o pacote completo de códigos de bits não pôde ser gerado porque XX / XX foi criado apenas com o marcador de código de bits. A biblioteca deve ser gerada a partir da compilação do arquivo Xcode com o código de bits ativado.

Alguma idéia do que está errado? A biblioteca está compilando com êxito, mas não me permite arquivar. Criei uma função de adição simples e a transformei em uma biblioteca, e recebo os mesmos sintomas, portanto não é a biblioteca que estou compilando.

Editar 2: você deve criar as versões arm64 e armv7 usando o bitcode e lipo-as juntas. O uso do código de bits não elimina a necessidade de uma biblioteca gorda ao arquivar. fonte: https://forums.developer.apple.com/message/25132#25132


Ao criar bibliotecas estáticas, você deve adicionar o seguinte para geração de código de bit:

-fembed-bitcode 

para uma biblioteca dinâmica, é necessário vincular adicionalmente

-fembed-bitcode

Nota: Este comando está disponível apenas no Xcode7 +

Em relação à resposta aceita do uso de -fembed-bitcode-marker

Você deve estar ciente de que uma compilação normal com a opção -fembed-bitcode-marker produzirá seções de código de bits incorporadas de tamanho mínimo sem nenhum conteúdo real. Isso é feito como uma maneira de testar os aspectos relacionados ao código de bit da sua compilação sem diminuir a velocidade do processo de compilação. O conteúdo real do código de bit é incluído quando você constrói um arquivo morto.

Funcionários da Apple. https://forums.developer.apple.com/thread/3971#12225

Para ser mais específico:

  • -fembed-bitcode-marker simplesmente marca onde o código de bits estaria no binário após uma compilação do arquivo.
  • -fembed-bitcode realmente faz toda a geração e incorporação de código de bits, então é isso que você precisa usar para criar bibliotecas estáticas.
  • O próprio Xcode constrói com -fembed-bitcode-marker para construções regulares (como implantar no simulador)
  • O Xcode é compilado apenas com -fembed-bitcode para compilações de arquivo / produção (pois isso é necessário apenas para a Apple).

Se você está construindo uma Biblioteca Estática e deseja ativar o código de bits, apenas o (1) ENABLE_BITCODE = YES pode não ser suficiente.

(2) Também com a configuração -fembed-bitcode o erro abaixo ainda estava sendo gerado para vários arquivos quando construído no Teamcity

bitcode bundle could not be generated because ‘/path/fileInYourStaticLib.a(fileInYourStaticLib.o)’ was built without full bitcode. All object files and libraries for bitcode must be generated from Xcode Archive or Install build for architecture arm64

Algumas dicas / coisas a considerar que me ajudaram a resolver o problema, além das etapas acima (1) e (2)

  1. Certifique-se de definir a variável 'Other C Flags' como "-embed-bitcode" no 'PROJECT' e todos os 'TARGETS'.

  2. Se houver vários projetos para os quais você está tentando criar uma biblioteca estática, verifique se todos os projetos têm "-fembed-bitcode" ativado.

  3. On Build Settings, click on the + sign at the top to add a user-defined build setting with the name BITCODE_GENERATION_MODE , and set Debug to marcador , Release to código , Release to bit

  4. Se as etapas acima não funcionarem, você também pode tentar esta opção. On Build Settings -> Other C flags, set Debug to -fembed-bitcode-marker , and Release to -fembed-bitcode

Este blog foi de grande ajuda https://medium.com/@heitorburger/static-libraries-frameworks-and-bitcode-6d8f784478a9

Além disso, toda vez que você fizer as alterações acima, tente excluir o DerivedData, limpar o projeto XCode e, possivelmente, sair e reiniciar o XCode


Vá para as configurações de compilação . Procure por " sinalizadores de compilador personalizados ".
Adicione -fembed-bitcode a outros sinalizadores C. Isso garantirá que a lib seja criada com compatibilidade de código de bits em tempo de compilação. Eu fiz isso para iOS de 64 e 32 bits, e lipo'd em um. Funciona como um encanto.

Como vocês tiveram consultas, aqui está uma captura de tela das configurações: As configurações são as mesmas para o destino do projeto e o destino do SDK.

A lib de código de bits não funcionará com o Xcode 6.





bitcode