Один (довольно грубый) способ узнать, для какой архитектуры созданы нативные библиотеки APK, - это разархивировать его (это всего лишь zip-файл) и взглянуть на папку libs - если приложение содержит какие-либо нативные библиотеки, они будут разбиты на следующие подпапки внутри (с скомпилированными библиотеками внутри них):
См. Пакет приложений Android для получения дополнительной информации о структуре APK и источнике приведенного выше списка. Более полный (включая MIPS64) список, а также некоторую информацию об особенностях архитектуры можно найти в заархивированной версии страницы управления ABI для Android Developer , захваченной 18 апреля 2016 года.
Интересно, что нацеливание на один ABI (где приложение включает в себя собственные библиотеки, разработанные для одной архитектуры) не обязательно означает, что приложение не будет работать на устройствах, использующих другие архитектуры. Например, ARMv8-a имеет обратную совместимость с ARM и ARMv7-a, а устройства Intel x86 для Android содержат собственный уровень трансляции , позволяющий выполнять код ARM на устройствах x86 (позволяя приложениям, поддерживающим только ARM, работать на платформах x86). Перечень АБИС , что Android устройство может выполнить , можно найти в ro.product.cpu.abilist
собственности, которая может быть достигнута в оболочке (например , через терминальное приложение на устройстве, или через ADB , используя adb shell
) , используя getprop
команду: getprop ro.product.cpu.abilist
.