Большинство телефонов Android оснащены чипсетами ARM. Однако многие устройства ChromeOS используют чипы x86. Разница не важна для приложений, написанных на Kotlin или Java. Однако для приложений, написанных на Android NDK, в том числе созданных с использованием игровых движков, тип чипсета устройства может иметь важное значение.
В идеале все приложения, использующие код Android NDK, должны поставляться со всеми четырьмя основными ABI (интерфейсами двоичных файлов приложений) Android : armeabi-v7a (arm32), arm64-v8a (arm64), x86 (x86_32) и x86_64.
Это обеспечивает наилучшую производительность и минимальное потребление заряда батареи для каждого устройства. Например, файл build.gradle созданный с помощью cmake, может содержать:
externalNativeBuild {
cmake {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
}
}размер APK
Каждый ABI в монолитном APK-файле увеличивает свой размер. Это может повлиять на использование дискового пространства пользователями, размер загружаемых приложений и может привести к превышению лимитов размера, установленных Play Store. Лучший способ избежать этого — использовать пакеты приложений Android . Пакеты приложений позволяют легко объединить все четыре ABI из Android Studio, но не увеличивают размер загружаемых файлов для пользователей. Они также упрощают использование динамической доставки , позволяя пользователям загружать большой игровой контент только по запросу. Если пакеты приложений вам недоступны, вы можете использовать более старый способ — multi-APK — для аналогичного поведения.
32 против 64-бит
Все приложения для Android должны иметь 64-битную версию сборки. 32-битная сборка является необязательной как для устройств ARM, так и для x86. Дополнительную информацию см. в документации Android для 64-битных систем .
Хотя предоставление только 64-битных сборок уменьшает количество необходимых целевых платформ сборки и расширяет возможности тестирования, это также ограничивает типы устройств, на которых может запускаться ваша игра. Например, из-за других аппаратных ограничений многие старые Chromebook могут запускать только 32-битные приложения Android, несмотря на наличие 64-битных процессоров. Чтобы гарантировать работу вашего приложения на этих устройствах, включите поддержку как 32-битных, так и 64-битных версий.
Примечание: Для всех новых и обновленных приложений требуется 64-битная версия. Play Store прекратил поддержку 32-битных приложений для устройств, поддерживающих 64-битные системы. Многие Chromebook поддерживают 64-битную архитектуру, и мы рекомендуем как можно скорее обновить ваше приложение, добавив 64-битную версию, чтобы обеспечить бесперебойную работу для пользователей вашего приложения на ChromeOS.
ARM-перевод
Chromebook на базе x86 стараются по возможности транслировать код ARM. Однако трансляция замедляет работу и увеличивает расход заряда батареи. Даже для простых игр следует предусмотреть сборки для x86 для наилучшего пользовательского опыта. Если вы не можете предоставить сборки для x86, учтите, что некоторые Chromebook на базе x86 не могут транслировать код arm64. В этом случае вам следует включить в свои сборки ABI как arm32, так и arm64.
Хотя трансляция кода arm32 доступна на всех Chromebook, поддерживающих Android, не все Chromebook могут транслировать код arm64. Это означает, что если ваша игра предназначена только для сборки на arm64, она не будет доступна для большого количества устройств ChromeOS. Если вы не можете поставлять бинарные файлы для x86, включите в свои сборки ABI как для arm32, так и для arm64.
| Включенные АДГ | Поддержка ChromeOS |
|---|---|
arm64 | Бедный |
arm32/arm64 | ОК (с переводом) |
arm32/arm64/x86_32/x86_64 | Лучший |