Considerações sobre a plataforma de 32/64 bits

Embora o iOS e o macOS tenham historicamente suportado aplicativos de 32 e 64 bits, a Apple gradualmente preteriu o suporte de 32 bits.

A partir do iOS 11, os aplicativos de 32 bits não serão mais iniciados e todos os envios para o App Store devem dar suporte a 64 bits.

A partir de janeiro de 2018, novos aplicativos enviados ao Mac App Store devem dar suporte a 64 bits e os aplicativos existentes devem ser atualizados até junho de 2018.

A API Clássica do Xamarin (XamMac.dll e monotouch.dll) tinha suporte apenas para aplicativos de 32 bits. No entanto, os novos aplicativos Xamarin.iOS e Xamarin.Mac usam a API Unificada (Xamarin.iOS e Xamarin.Mac) por padrão e, portanto, podem direcionar de 32 e 64 bits, conforme necessário.

iOS

Habilitar builds de 64 bits de aplicativos Xamarin.iOS

Aviso

Esta seção está incluída por motivos históricos e para ajudar a mover projetos Xamarin.iOS mais antigos para a API Unificada e dar suporte a 64 bits. Todos os novos projetos do Xamarin.iOS usarão a API Unificada e direcionarão 64 bits por padrão.

Para aplicativos móveis Xamarin.iOS que foram convertidos na API Unificada, os desenvolvedores devem atualizar manualmente as configurações de build para atingir 64 bits:

  1. No Painel de Soluções, clique duas vezes no projeto do aplicativo para abrir a janela Opções do Projeto .

  2. Selecione Build do iOS.

  3. Para o Simulador de iPhone, na lista suspensa Arquiteturas com suporte , selecione x86_64 ou i386 + x86_64:

    Definindo arquiteturas com suporte para x86_64 ou i386 + x86_64

  4. Para dispositivos físicos, selecione uma das combinações arm64 disponíveis:

    Definindo arquiteturas com suporte para uma das combinações do ARM64

  5. Clique em OK.

  6. Execute uma compilação limpa.

O ARMv7s tem suporte apenas pelo processador A6 incluído no iPhone 5 (ou superior). O código ARMv7 é mais rápido e menor que o ARMv6, funciona apenas com o iPhone 3GS e posterior e é exigido pela Apple ao direcionar o iPad ou uma versão mínima do iOS de 5.0. O ARMv6 funciona em todos os dispositivos, mas não tem mais suporte do compilador enviado com o Xcode 4.5 e posterior.

O ARM64 é necessário para dar suporte ao iOS 8 no iPhone 6 ou em outros dispositivos de 64 bits e será exigido pela Apple ao enviar aplicativos novos ou atualizados no iTunes App Store.

Para obter uma visão abrangente dos recursos de vários dispositivos iOS, marcar o documento de compatibilidade de dispositivos da Apple.

Aumentos de tamanho binário e de 64 bits

Durante a transição da Apple de 32 bits para 64 bits, os aplicativos iOS precisarão ser executados em hardware de 32 bits e 64 bits. Por isso, a API Unificada do Xamarin permite que os desenvolvedores direcionem ambos.

Direcionar arquiteturas de 32 bits e 64 bits aumentará significativamente o tamanho de um aplicativo. No entanto, isso permitirá que os dispositivos mais recentes executem código otimizado enquanto ainda dão suporte a dispositivos mais antigos.

Importante

Se você receber a seguinte mensagem ao enviar um aplicativo iOS para o iTunes App Store, "AVISO ITMS-9000: suporte ausente de 64 bits. A partir de 1º de fevereiro de 2015, novos aplicativos iOS carregados no App Store devem incluir suporte de 64 bits e ser criados com o SDK do iOS 8, incluído no Xcode 6 ou posterior. Para habilitar 64 bits em seu projeto, recomendamos usar a configuração de build de Xcode padrão de "Arquiteturas padrão" para criar um único binário com código de 32 bits e 64 bits." Você precisa alternar as arquiteturas com suporte para uma das combinações arm64 disponíveis (conforme mostrado acima), recompilar e reenviar.

Mac

Importante

A partir de janeiro de 2018, todos os novos aplicativos Mac enviados ao Mac App Store devem dar suporte a 64 bits. Os aplicativos mac App Store existentes e suas atualizações devem dar suporte a 64 bits a partir de junho de 2018. Confira o anúncio da Apple e um guia que descreve como atualizar seus aplicativos Xamarin.Mac para 64 bits.

A maioria dos computadores Mac modernos dá suporte a aplicativos de 32 bits e 64 bits. O MacOS 10.6 (Snow Leopard) foi o último sistema operacional a ser executado em sistemas de 32 bits. A maioria dos Macs lançados desde 2010 dá suporte a ambos os sistemas.

Ao contrário do iOS, muitas das novas estruturas introduzidas em versões recentes do macOS só têm suporte no modo de 64 bits (CloudKit, EventKit, GameController, LocalAuthentication, MediaLibrary, MultipeerConnectivity, NotificationCenter, GLKit, SpriteKit, Social e MapKit, entre outros).

A API Unificada permite que os desenvolvedores escolham que tipo de aplicativos eles desejam produzir: 32 bits ou 64 bits.

Os aplicativos de 32 bits serão executados em computadores Mac de 32 e 64 bits, terão um espaço de endereço limitado a 32 bits e exigirão que todas as bibliotecas sejam de 32 bits.

Normalmente, você usará esse modo se tiver dependências de 32 bits que não são executadas no modo de 64 bits, se quiser ter um download menor ou se não houver benefícios de desempenho na mudança para 64 bits.

Esse modo é limitador, pois você não poderá usar muitas estruturas disponíveis no macOS Mavericks e no macOS Yosemite.

Aplicativos de 64 bits só serão executados em dispositivos Mac de 64 bits.

Para Mac, esse é o modo de operação preferencial, pois a maioria dos Macs em uso atualmente dá suporte ao modo de 64 bits e você tem acesso ao conjunto completo de estruturas fornecido pela Apple.

Habilitar builds de 64 bits de aplicativos Xamarin.Mac

Para obter informações sobre como criar um aplicativo de 64 bits usando o Xamarin.Mac, consulte o guia Atualizando aplicativos unificados do Xamarin.Mac para 64 bits .