Compartilhar via


Arquiteturas de CPU

O Xamarin.Android suporta várias arquiteturas de CPU, incluindo dispositivos de 32 bits e 64 bits. Este artigo explica como direcionar um aplicativo para uma ou mais arquiteturas de CPU compatíveis com Android.

Visão geral das arquiteturas de CPU

Ao preparar seu aplicativo para lançamento, você deve especificar quais arquiteturas de CPU de plataforma seu aplicativo suporta. Um único APK pode conter código de computador para dar suporte a várias arquiteturas diferentes. Cada coleção de código específico da arquitetura está associada a uma Interface Binária de Aplicativo (ABI). Cada ABI define como esse código de máquina deve interagir com o Android em tempo de execução. Para obter mais informações sobre como isso funciona, consulte Multi-Core Devices & Xamarin.Android.

Como especificar arquiteturas suportadas

Normalmente, você seleciona explicitamente uma arquitetura (ou arquiteturas) quando seu aplicativo é configurado para Release. Quando seu aplicativo é configurado para Depuração, as opções Usar Tempo de Execução Compartilhado e Usar Implantação Rápida são habilitadas, o que desabilita a seleção explícita de arquitetura.

No Visual Studio, clique com o botão direito do mouse em seu projeto no Gerenciador de Soluções e selecione Propriedades. Na página Opções do Android, verifique a seção Propriedades do empacotamento e verifique se Usar o tempo de execução compartilhado está desabilitado (desativá-lo permite que você selecione explicitamente quais ABIs oferecer suporte). Clique no botão Avançado e, em Arquiteturas suportadas, verifique as arquiteturas às quais você deseja oferecer suporte:

Selecting armeabi and armeabi-v7a

O Xamarin.Android é compatível com as seguintes arquiteturas:

  • armeabi – CPUs baseadas em ARM que suportam pelo menos o conjunto de instruções ARMv5TE. Observe que armeabi não é thread-safe e não deve ser usado em dispositivos com várias CPUs.

Observação

A partir do Xamarin.Android 9.2, armeabi não é mais suportado.

  • armeabi-v7a – CPUs baseadas em ARM com operações de ponto flutuante de hardware e vários dispositivos de CPU (SMP). Observe que armeabi-v7a o código da máquina não será executado em dispositivos ARMv5.

  • arm64-v8a – CPUs baseadas na arquitetura ARMv8 de 64 bits.

  • x86 – CPUs que suportam o conjunto de instruções x86 (ou IA-32). Este conjunto de instruções é equivalente ao do Pentium Pro, incluindo instruções MMX, SSE, SSE2 e SSE3.

  • x86_64 CPUs que suportam o conjunto de instruções x86 de 64 bits (também conhecido como x64 e AMD64).

Xamarin.Android padrão para armeabi-v7acompilações de lançamento . Essa configuração fornece um desempenho significativamente melhor do que armeabio . Se você estiver segmentando uma plataforma ARM de 64 bits (como o Nexus 9), selecione arm64-v8a. Se você estiver implantando seu aplicativo em um dispositivo x86, selecione x86. Se o dispositivo x86 de destino usar uma arquitetura de CPU de 64 bits, selecione x86_64.

Segmentação de várias plataformas

Para direcionar várias arquiteturas de CPU, você pode selecionar mais de uma ABI (às custas de um tamanho de arquivo APK maior). Você pode usar a opção Gerar um pacote (.apk) por ABI selecionada (descrita em Definir propriedades de empacotamento) para criar um APK separado para cada arquitetura suportada.

Você não precisa selecionar arm64-v8a ou x86_64 para segmentar dispositivos de 64 bits, o suporte a 64 bits não é necessário para executar seu aplicativo em hardware de 64 bits. Por exemplo, dispositivos ARM de 64 bits (como o Nexus 9) podem executar aplicativos configurados para armeabi-v7ao . A principal vantagem de habilitar o suporte a 64 bits é possibilitar que seu aplicativo lide com mais memória.

Observação

A partir de agosto de 2018, os novos aplicativos precisarão direcionar o nível 26 da API, e a partir de agosto de 2019, os aplicativos precisarão fornecer versões de 64 bits além da versão de 32 bits.

Informações adicionais

Em algumas situações, talvez seja necessário criar um APK separado para cada arquitetura (para reduzir o tamanho do APK ou porque seu aplicativo tem bibliotecas compartilhadas específicas para uma arquitetura de CPU específica). Para obter mais informações sobre essa abordagem, consulte Criar APKs específicos da ABI.