ARM в Android: что это и почему это важно
Коротко: если устройство показывает arm64‑v8a или имеет ro.product.cpu.abilist64 — ставьте arm64 (gsi_arm64 / arm64‑прошивку); если только armeabi‑v7a — выбирайте 32‑битный образ. Неподходящая архитектура приводит к отказу загрузки или нестабильности.
Как проверить архитектуру и совместимые ABI — проверенные методы
- Через ADB (самый точный метод):
- adb shell getprop ro.product.cpu.abi
- adb shell getprop ro.product.cpu.abilist
- adb shell getprop ro.product.cpu.abilist32
- adb shell getprop ro.product.cpu.abilist64
- Дополнительно:
- adb shell cat /proc/cpuinfo — модель SoC и режим ядра.
- adb shell uname -a — иногда показывает aarch64/armv7l.
- fastboot getvar all — информация о продукте и загрузчике.
Если ro.product.cpu.abilist64 пустой, а abilist содержит только armeabi‑v7a — система фактически 32‑битная или работает в 32‑битном userspace. Проверяйте оба свойства.
Как выбрать образ/прошивку — чек‑лист перед флешем
- Определите ABI — если есть arm64‑ввод, выбирайте arm64‑образ.
- Выберите тип образа:
- Официальная прошивка производителя для вашей модели/регионального кода — приоритет, если доступна.
- GSI — только для устройств с Project Treble (Android 9+) и совместимой конфигурацией (A/B, AVB, binder‑bitness). Для 64‑битных устройств берите gsi_arm64.
- Кастомные прошивки — предпочтительны, если они адаптированы под конкретную модель (учитывают vendor).
- Сверьте версии bootloader/vendor и требования образа (binder‑bitness, AVB).
- Проверьте статус загрузчика (fastboot) и наличие разблокировки, совместимость подписей.
- Сделайте полный бэкап (Nandroid, userdata snapshot) и подготовьте план отката.
Не прошивайте 32‑битный образ на устройство, которое однозначно показывает arm64‑v8a и не имеет 32‑битной abilist — возможен bootloop или отказ загрузки.
Когда какой образ выбирать
| Ситуация | Выбор образа | Комментарий |
|---|---|---|
| Современный телефон с arm64 | arm64 / gsi_arm64 / официальная arm64‑прошивка | Лучше производительности и совместимости с 64‑битными библиотеками |
| Старый телефон (armeabi‑v7a) | arm / 32‑битная официальная прошивка | 64‑битный образ не загрузится |
| Устройство на Intel | x86 / x86_64 | Только для редких Intel‑устройств |
| Тест GSI на Treble‑устройстве | gsi_arm64 (если 64‑бит) | Убедитесь в поддержке A/B и AVB |
Частые ошибки
- Игнорирование ro.product.cpu.abilist* и попытка поставить неподходящий ABI.
- Непроверенный fastboot/bootloader: закрытый загрузчик или несоответствующие подписи.
- Отсутствие бэкапа перед прошивкой.
- Попытка поставить чистый GSI на устройство без поддержки Project Treble или без учёта binder‑bitness.
FAQ
- Можно ли запускать 32‑битный APK на arm64‑устройстве?
Да, если система поддерживает 32‑битный userspace (проверьте ro.product.cpu.abilist). Но некоторые сборки отключают 32‑битную поддержку. - Что выбрать: GSI или кастомная прошивка?
GSI хорош для теста чистой AOSP и совместимых Treble‑устройств; кастомные ROMы (Lineage и др.) лучше адаптированы под конкретную модель и стабильнее для ежедневного использования. - Как понять, что SoC поддерживает 64‑бит?
Модель SoC (Snapdragon/Exynos/MediaTek) обычно указывает поддержку ARMv8+, но окончательное решение даёт системная сборка — смотрите ro.product.cpu.abilist*.
Короткий набор команд (копировать в терминал)
- adb shell getprop ro.product.cpu.abi
- adb shell getprop ro.product.cpu.abilist
- adb shell getprop ro.product.cpu.abilist64
- adb shell cat /proc/cpuinfo
- fastboot getvar all
Итог: выбирайте образ по данным ro.product.cpu.abilist* и типу устройства (официальная прошивка → кастом/адаптированный ROM → GSI только при совместимости Treble). Перед прошивкой сделайте бэкап и проверьте состояние загрузчика; при сомнениях пришлите вывод getprop — помогу выбрать конкретно для вашей модели.