ios - navigateback - v3 ionic




O que ENABLE_BITCODE faz no xcode 7? (4)

Estou com um problema com o termo de código de bits incorporado.
O que é código de bits incorporado?
Quando ativar, ENABLE_BITCODE no novo Xcode?
O que acontece com o binário quando ativado, ENABLE_BITCODE no Xcode 7?


Código de bits (iOS, watchOS)

Bitcode é uma representação intermediária de um programa compilado. Os aplicativos enviados para o iTunes Connect que contêm código de bits serão compilados e vinculados na App Store. A inclusão de código de bits permitirá que a Apple otimize novamente o binário do seu aplicativo no futuro sem a necessidade de enviar uma nova versão do seu aplicativo para a loja.


Basicamente, esse conceito é um pouco semelhante ao java, onde o código de bytes é executado em diferentes JVMs e, nesse caso, o código de bits é colocado na loja iTune e, em vez de fornecer o código intermediário para diferentes plataformas (dispositivos), fornece o código compilado que não precisa qualquer máquina virtual para executar.

Portanto, precisamos criar o código de bits uma vez e ele estará disponível para dispositivos existentes ou futuros. É a dor de cabeça da Apple compilar e torná-lo compatível com cada plataforma que eles têm.

Os desenvolvedores não precisam fazer alterações e enviar o aplicativo novamente para dar suporte a novas plataformas.

Vamos dar o exemplo do iPhone 5s quando a Apple introduziu o chip x64 nele. Embora os aplicativos x86 sejam totalmente compatíveis com a arquitetura x64 , mas para utilizar totalmente a plataforma x64 , o desenvolvedor precisa alterar a arquitetura ou algum código. Depois que ele termina, o aplicativo é enviado à loja de aplicativos para revisão.

Se esse conceito de código de bit foi lançado anteriormente, os desenvolvedores não precisam fazer alterações para dar suporte à arquitetura de x64 bits.


O que é código de bits incorporado?

De acordo com os docs :

Bitcode é uma representação intermediária de um programa compilado. Os aplicativos enviados para o iTunes Connect que contêm código de bits serão compilados e vinculados na App Store. A inclusão de código de bits permitirá que a Apple otimize novamente o binário do seu aplicativo no futuro sem a necessidade de enviar uma nova versão do seu aplicativo para a loja.

Atualização: esta frase em "Novos recursos no Xcode 7" me fez pensar por um longo tempo que o Bitcode é necessário para o Slicing para reduzir o tamanho do aplicativo:

Quando você arquiva para envio à App Store, o Xcode compila seu aplicativo em uma representação intermediária. A App Store compilará o código de bit nos executáveis ​​de 64 ou 32 bits, conforme necessário.

No entanto, isso não é verdade, o Bitcode e o Slicing funcionam de forma independente: o Slicing consiste em reduzir o tamanho do aplicativo e gerar variantes de pacote de aplicativos, e o Bitcode trata de certas otimizações binárias. Verifiquei isso verificando as arquiteturas incluídas nos executáveis ​​de aplicativos que não são de código de bits e constatando que eles incluem apenas os necessários.

O Bitcode permite que outro componente do App Thinning chamado Slicing gere variantes de pacotes de aplicativos com executáveis ​​específicos para arquiteturas específicas, por exemplo, a variante do iPhone 5S incluirá apenas o executável arm64, o iPad Mini armv7 e assim por diante.

Quando ativar ENABLE_BITCODE no novo Xcode?

Para aplicativos iOS, o código de bits é o padrão, mas opcional. Se você fornecer código de bits, todos os aplicativos e estruturas no pacote de aplicativos precisarão incluir código de bits. Para aplicativos watchOS e tvOS, é necessário um código de bits.

O que acontece com o binário quando ENABLE_BITCODE está ativado no novo Xcode?

Da referência do Xcode 7:

A ativação dessa configuração indica que o destino ou projeto deve gerar código de bits durante a compilação para plataformas e arquiteturas que o suportam. Para compilações de arquivo morto, o código de bit será gerado no binário vinculado para envio à loja de aplicativos. Para outras compilações, o compilador e o vinculador verificarão se o código está em conformidade com os requisitos para geração de código de bit, mas não gerará código de bit real.

Aqui estão alguns links que ajudarão a entender melhor o Bitcode :


Atualizar

A Apple esclareceu que a fatia ocorre independentemente da ativação do código de bits. Também observei isso na prática, onde um aplicativo sem código de bit será baixado apenas como a arquitetura apropriada para o dispositivo de destino.

Original

Mais especificamente :

Código de bits. Arquive seu aplicativo para envio à App Store em uma representação intermediária, que é compilada em executáveis ​​de 64 ou 32 bits para os dispositivos de destino quando entregues.

Fatiamento. Os trabalhos de arte incorporados ao Catálogo de ativos e marcados para uma plataforma permitem que a App Store entregue apenas o necessário para a instalação.

Da maneira como li isso, se você oferecer suporte a código de bits, os downloaders do seu aplicativo obterão apenas a arquitetura compilada necessária para o seu próprio dispositivo.


Código de bits refere-se ao tipo de código: "Código de bits LLVM" enviado ao iTunes Connect. Isso permite que a Apple use certos cálculos para otimizar ainda mais os aplicativos (por exemplo: tamanhos de executáveis ​​possivelmente reduzidos). Se a Apple precisar alterar seu executável, poderá fazer isso sem que uma nova compilação seja carregada.

Isso difere de: Fatiar, que é o processo da Apple para otimizar seu aplicativo para o dispositivo de um usuário com base na resolução e arquitetura do dispositivo. O fatiamento não requer código de bits. (Por exemplo: incluindo apenas imagens @ 2x nos 5s)

O App Thinning é a combinação de fatia, código de bits e recursos sob demanda

Bitcode é uma representação intermediária de um programa compilado. Os aplicativos enviados para o iTunes Connect que contêm código de bits serão compilados e vinculados na App Store. A inclusão de código de bits permitirá que a Apple otimize novamente o binário do seu aplicativo no futuro sem a necessidade de enviar uma nova versão do seu aplicativo para a loja.

Documentação da Apple sobre afinamento de aplicativos





bitcode