Android NDK. Очень много ABI: armeabi, armeabi-v7a, arm64-v8a. Под какую из них реально стоит строить нативные .so-либы?
armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, mips, mips64. Ну, armeabi — вроде понятно. Эта вроде архитектура на всех (или почти на всех) реальных гаджетах.
x86 — вроде тоже понятно. Это прежде всего для Genymotion и прочих эмуляторов, где Android x86. А остальные? Будет ли идеальным решением просто построить либу под все ABI? А если нет возможности протестить везде, а только на x86 и armeabi? И почему столько armов: armeabi, armeabi-v7a, arm64-v8a? Какой из них актуальнее? Как определить, какой поддерживается моим гаджетом? Могут ли быть несколько сразу?
Отслеживать
задан 7 мар 2016 в 20:53
user204455 user204455
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
x86 — это прежде всего процессоры Intel Atom, которые установлены в немалое число реальных устройств, а не эмуляторы. Эмулятор, как раз может эмулировать любую архитектуру, независимо от архитектуры процессора, на котором хостится — на то он и эмулятор. Вы можете в этом убедится сами, посмотрев на список образов для эмуляции:

Минимальным набором поддерживаемых архитектур является набор APP_ABI := x86 armeabi . Далее следует определиться, будет ли ваше приложение использовать дополнительные возможности архитектуры armeabi-v7a, например NEON — если это так, то данную архитектуру тоже следует включить в список (расширенный список инструкций arm-v7) — на самом деле, сейчас практически все ARM процессоры, как минимум v7
В последнее время устройства с процессорами на 64-ех битной архитектуре все чаще появляются в продаже, поэтому их тоже стоит учесть.
Точно проигнорировать можно mips/mips64
Узнать, какая архитектура у вашего устройства, можно по спецификации процессора, который оно использует. Например, Qualcomm Snapdragon 820 — ARM-V8A. Так же в маркете можно найти программы, которые покажут системную информацию.
Несколько архитектур ARM в одном процессоре быть не может, но каждая следующая включает предыдущую, то есть в ARM-V7 включен ARM, в ARM-V8 — ARM-V7. По факту, самая актуальная сейчас ARM-платформа — ARM-V7, на ней построено абсолютное большинство действующих процессоров, но ARM-V8 активно наступает.
Разница в ARM-архитектурах очевидна, каждая следующая — шаг в эволюции, добавляются новые возможности на уровне железного ядра.
Вы можете указать собрать библиотеку под все abi и это будет хорошим решением, если итоговый размер приложения вас устроит — каждая дополнительная платформа — новые файлы, которые имеют размер.
Архитектура процессора. Что такое armeabi-v7a и arm64-v8a

Быстро узнаем, что такое armeabi-v7a, arm64-v8a и какие приложения Вы можете установить на свое устройство.
ufrstealer
Просмотров:
03-03-2023, 18:48
3-03-2023, 20:21
Наверное у каждого человека, который качал приложения не с официального магазина, возникали ошибки вида: Приложение не установлено, не удалось разобрать пакет и тому подобные. Причин для этого может быть несколько, но сегодня мы рассмотрим одну из самых главных. Технический мир развивается и постоянно появляются новые технологии от компании Google и других производителей Андроид устройств. Если ближе к сути, то у каждого процессора есть своя архитектура (Набор инструкций) и их бывает несколько видов:
- armeabi-v7a — самый популярный набор инструкций на данный момент, работает с 32-разрядными процессорами;
- arm64-v8a — 64-разрядная архитектура, которая набирает обороты и появляется на новых устройствах все чаще, работает с 64-битными процессорами;
- x86 и x86_64 — для процессоров Intel, которые устанавливаются на ноутбуки и планшеты.
Узнаем, какая архитектура у Вашего устройства
- Качаем с Google Play приложение Droid Hardware Info. Далее выполняем следующие действия: переходим в раздел -> Система -> Процессор и смотрим пункты «Архитектура процессора», а также «Набор инструкций».
- Если у Вас есть Telegram, заходим в настройки и листаем в самый низ, где будет написана Ваша архитектура.

Какие игры и приложения Вы можете устанавливать?
- Если у Вас armeabi-v7a, то выбор невелик и нужно искать файлы с поддержкой этого набора инструкций;
- Если у Вас arm64-v8a, можно устанавливать файлы armeabi-v7a и arm64-v8a;
- x86 — только x86, x86_64 — можно скачивать x86 и x86_64.
Итог — если Вы не хотите разбираться во всем этом, просто старайтесь скачивать файлы с armeabi-v7a, они поддерживаются почти везде.
Но есть исключения:
- Если на устройстве с процессором arm64-v8a установлена 32-разрядная операционная система, то можно будет устанавливать только файлы armeabi-v7a.
- С выходом новой версии Android 14, при установке приложений armeabi-v7a, система предупреждает, что в скором времени Google откажется от поддержки 32-битных версий и останется только arm64-v8a. Насколько быстро произойдет переход — неизвестно. Но вряд ли это будет быстро.
Если у Вас появились дополнительные вопросы — задавайте их в комментариях, мы постараемся ответить.
Как определить архитектуру вашего Android смартфона или планшета: armeabi-v7a, arm64-v8a, x86 и x86_64
Архитектура процессора вашего Android-устройства определяет, какие приложения и компоненты с ним совместимы.
Эта информация может быть полезна при установке APK-файлов, загруженных с таких сайтов как APKMirror, APKPure, APKCombo и других. В настоящий момент, выпускаются APK для четырёх архитектур: armeabi-v7a (arm), arm64-v8a (aarch64), x86 (i386) и x86_64.
В этой статье мы расскажем, как узнать архитектуру вашего Android-смартфона или планшета, используя приложение CPU X или информацию в настройках устройства.
Определение архитектуры с помощью приложения CPU X
Приложение CPU X предоставляет информацию о вашем устройстве, включая архитектуру процессора. Вот как его использовать:
- Установите приложение CPU X из Google Play Маркет.
- Запустите приложение и откройте вкладку Процессор (Device).
- В разделе «Процессор» найдите строку Набор инструкций (Instruction Sets). Здесь будет указана архитектура вашего устройства (armeabi-v7a, arm64-v8a, x86 или x86_64).

Определение архитектуры через настройки Android-устройства:
- Откройте настройки на вашем Android-устройстве.
- Найдите раздел «О телефоне» или «О планшете» (зависит от устройства).
- Ищите информацию о процессоре или модели устройства и проконсультируйтесь с информацией о производителе. Обычно модель процессора указывает на архитектуру, которую вы ищете (например, Snapdragon 865 — это процессор архитектуры arm64-v8a).
Заключение
Определение архитектуры вашего Android-устройства важно для того, чтобы установить совместимые приложения и компоненты. Вы можете использовать приложение CPU X или информацию в настройках устройства, чтобы узнать архитектуру вашего процессора. Теперь, зная архитектуру вашего устройства, вы сможете установить правильные версии приложений и наслаждаться их работой на вашем смартфоне или планшете.
Конец эпохи ARMv7 или же немного о портировании игр
Пару недель назад я столкнулся с проблемой отсутствия у игры поддержки архитектуры моего процессора в телефоне. Конечно, я знал, что ARMv7 устареет, но не ожидал, что это случится так быстро. В сети особо информации по downgrade приложения не было, поэтому пришлось немного импровизировать, вспоминая времена, когда пропала поддержка ARMv6. Так что, в данной статье речь пойдёт о переносе приложений с архитектуры ARMv8 на ARMv7, на основе моего опыта.
Тема с портированием андроид игр с одной архитектуры на другую весьма неновая. Изначально я столкнулся с этим ещё в 2015 году, только речь шла о портировании под ARMv6. С тех пор принцип переноса не поменялся, и перенести игру с одной архитектуры на другую может любой, если имеет необходимые библиотеки.
Разбор apk
Итак, что такое .apk? APK файл представляет из себя немного модифицированный ZIP архив, который содержит ресурсы игры и игровой движок. Выглядит он примерно так:

Папка lib — ключевая точка при переносе между архитектурами. Она содержит библиотеки движка нашей игры.
* armeabi — armv6 библиотеки (не актуально)
* armeabi-v7a — armv7 библиотеки (при отсутствии папки — отсутствует и поддержка архитектуры)
* arm64-v8a — armv8 x64 библиотеки
Перенос
Шаг #1
Первым делом нам нужно узнать, возможно ли портировать игру. Для этого нужно определить движок игры. К примеру, файл lib/libunity.so — принадлежит Unity Engine, а по наличию папки assets/x-renpy можно догадаться, что игра разработана на RenPy Engine. Если у игры движок не является собственным, то переходим к шагу два.
Шаг #2
Итак, мы определили движок игры. Теперь нам нужно найти подходящего донора. Если эта игра раньше поддерживалась вашим аппаратом, а после обновления перестала — то можно попробовать вскрыть ресурсы прошлых версий. Если этот вариант не подошёл, то можно поискать игры, базирующиеся на этом же движке. Иногда разработчики просто не добавляют поддержку armv7, так что есть вероятность найти нужные компоненты.
Шаг #3
Мы нашли подходящего донора, теперь нам нужно добавить папку lib/armeabi-v7a в наш (name).apk. Добавляем и видим следующее:

В самом начале, как я уже сказал, APK файл представляет из себя немного модифицированный ZIP архив, а после изменения его содержимого он становится обычным ZIP’ом.
Шаг #4
Для того, чтобы ваше устройство могло установить ваш (name).apk файл, его нужно «подписать». Для этого есть несколько различных утилит, к примеру apk-signer.
Устанавливаем утилиту на свой девайс, открываем, переходим в раздел Signing, нажимаем на карандаш снизу и выбираем наш (name).apk. После чего программа предложит вам выбрать, куда сохранить «подписанный файл». Выбираем и ждём. . PROFIT.

Шаг #5
Будь добрым человеком, выложи свой порт для общего пользования, к примеру, в топик игры на том же 4PDA. 😉