A maioria dos smartphones Android tem chipsets ARM. No entanto, muitos dispositivos ChromeOS usam chips x86. A diferença não é importante para apps escritos em Kotlin ou Java. No entanto, para apps escritos no NDK do Android, incluindo aqueles criados com mecanismos de jogos, o chipset no dispositivo pode ser uma preocupação importante.
O ideal é que todos os apps com o código do NDK do Android sejam enviados com as quatro principais ABIs (interfaces binárias de aplicativos) do Android: armeabi-v7a (arm32), arm64-v8a (arm64), x86 (x86_32) e x86_64.
Isso proporciona o melhor desempenho e o menor consumo de bateria para cada dispositivo. Por exemplo, um arquivo build.gradle baseado em cmake pode conter:
externalNativeBuild {
cmake {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}Tamanho do APK
Cada ABI em um APK monolítico aumenta tamanho dele. Isso pode afetar o uso do disco do usuário e o tamanho do download do app, podendo atingir os limites de tamanho da Play Store. A melhor maneira de evitar isso é usar os Android App Bundles. Os App Bundles permitem agrupar facilmente todas as quatro ABIs no Android Studio, mas não aumentam o tamanho do download para os usuários. Eles também facilitam o uso do Dynamic Delivery, permitindo que os usuários façam o download de conteúdo grande de jogos somente quando solicitado. Se os App Bundles não forem uma possibilidade para você, use o multi-APK mais antigo para um comportamento semelhante.
32 bits x 64 bits
Todos os apps Android precisam oferecer uma versão de build de 64 bits. Um build de 32 bits é opcional para dispositivos ARM e x86. Consulte a documentação do Android de 64 bits para mais informações.
Embora a disponibilização somente de builds de 64 bits reduza o número de destinos necessários e a superfície de teste, ela também limita os tipos de dispositivos que podem executar o jogo. Por exemplo, devido a outras limitações de hardware, muitos Chromebooks mais antigos só podem executar apps para Android de 32 bits, apesar de terem CPUs de 64 bits. Para garantir que seu app possa ser executado nesses dispositivos, inclua compatibilidade com 32 e 64 bits.
Observação:todos os apps novos e atualizados precisam incluir uma versão de 64 bits. A Play Store parou de veicular apps de 32 bits para dispositivos capazes de processar 64 bits. Muitos Chromebooks têm suporte a 64 bits. Recomendamos que você atualize seu app o mais rápido possível para incluir uma versão de 64 bits e garantir a continuidade para os usuários do app no ChromeOS.
Tradução de ARM
Os Chromebooks x86 tentam traduzir o código ARM sempre que possível. No entanto, a tradução diminui o desempenho e aumenta o uso da bateria. Mesmo jogos simples precisam oferecer builds x86 para a melhor experiência do usuário. Se não for possível fornecer builds x86, observe que alguns Chromebooks x86 não podem traduzir código arm64. Nesse caso, inclua as ABIs arm32 e arm64 nos seus builds.
Embora a tradução arm32 esteja disponível em todos os Chromebooks compatíveis com Android, nem todos os Chromebooks podem traduzir códigos arm64. Isso significa que, se o jogo estiver voltado apenas ao build arm64, ele não estará disponível para muitos dispositivos ChromeOS. Se não for possível enviar binários x86, inclua ABIs arm32 e arm64 nos seus builds.
| ABIs incluídas | Suporte para ChromeOS |
|---|---|
arm64 | Fraca |
arm32/arm64 | OK (com tradução) |
arm32/arm64/x86_32/x86_64 | Melhor |