Armeabi что это такое для Android

Обновлено: 31.01.2023

Начиная с выпуска Android Lollipop процесс установки Xposed Framework немного усложнился. Мало того, что для каждой версии Android существуют отдельные установщики, теперь вам также необходимо точно знать, какой тип процессора установлен на вашем устройстве, чтобы убедиться, что вы загружаете правильные файлы. На самом деле, в наши дни архитектура ЦП становится фактором во все большем количестве сценариев, включая некоторые загружаемые обновления приложений и, конечно же, пользовательские ПЗУ.

В современных телефонах Android используются три основные архитектуры ЦП. ARM, пожалуй, самый распространенный вариант, поскольку он оптимизирован для энергопотребления. ARM64 — это эволюция исходной архитектуры ARM, которая поддерживает 64-разрядную обработку для более мощных вычислений и быстро становится стандартом для новых устройств. Кроме того, есть x86, который немного мощнее, чем процессоры ARM любого типа, но не так экономичен для батареи, поэтому он наименее распространен из трех. Но независимо от всего этого, если вы не совсем уверены, какой у вас тип процессора, я покажу вам, как определить, является ли он ARM, ARM64 или чип x86 ниже.

Шаг 1. Установите информацию об оборудовании Droid

Самый простой способ узнать тип вашего процессора – установить приложение, которое дает вам информацию об оборудовании вашего устройства. Наше любимое такое приложение называется Droid Hardware Info и доступно бесплатно в магазине Google Play. Для начала найдите приложение по имени и установите его или перейдите непосредственно на страницу установки по следующей ссылке.

Основы Android: как узнать, какой у вас процессор (ARM, ARM64 или x86)

Шаг 2. Найдите архитектуру ЦП и наборы инструкций

Далее просто откройте сведения об оборудовании Droid и перейдите на вкладку Система. Отсюда следует отметить два поля — Архитектура процессора и Наборы инструкций. Запишите эту информацию и используйте таблицу на шаге 3 ниже, чтобы найти общее название для вашего типа ЦП.

Основы Android: как узнать, какой у вас процессор (ARM, ARM64 или x86)

Шаг 3. Преобразование этой информации в общее имя процессора

Информация, представленная в полях Архитектура ЦП и Наборы инструкций, немного отличается от требований, которые вы увидите, например, для приложения или установщика Xposed. Итак, чтобы подвести итог, сопоставьте информацию, которую вы нашли в Droid Hardware Info, со списком ниже, чтобы найти общее название для типа процессора вашего устройства:

Какой тип процессора используется в вашем устройстве — ARM, ARM64 или x86? Дайте нам знать в разделе комментариев ниже.

Защитите свое соединение без ежемесячного счета. Получите пожизненную подписку на VPN Unlimited для всех своих устройств, совершив разовую покупку в новом магазине Gadget Hacks Shop, и смотрите Hulu или Netflix без региональных ограничений, повышайте безопасность при просмотре в общедоступных сетях и многое другое.

Скачивая приложения для Android, я иногда встречал приложения для архитектуры armeabi-v7a и x86.

Я прочитал несколько ссылок на архитектуры armeabi-v7a и x86. Однако в итоге я так и не смог окончательно определить, какие мобильные процессоры и архитектуры относятся к armeabi-v7a, а какие к x86.

Насколько мне известно, в устройствах Android обычно используются мобильные процессоры Snapdragon (от Qualcomm), MediaTek, Exynos (от Samsung) и Kirin (от Huawei). Почти все бренды объясняют характеристики смартфона, и почти во всех спецификациях указывается, является ли мобильный процессор 64-битным или нет. Должен ли я сделать вывод, что 64-битные мобильные процессоры (Snapdragon, MediaTek, Exynos или Kirin) относятся к архитектуре ARM?

EDIT:
Чтобы понять, какая SoC поддерживает Android-apk armeabi-v7a, а какая SoC поддерживает Android-apk x86, я изучил спецификации MediaTek Helio X30 и Snapdragon 855. В спецификации Helio X30 сказано, что он поддерживает двухъядерный ARM Cortex-A73 и четырехъядерный ARM Cortex-A53, но ARM нигде не упоминается в спецификации Snapdragon 855. Из этого следует вывод, что Helio X30 будет поддерживать armeabi-v7a Android приложения, а Snapdragon 855 не будет поддерживать приложения armeabi-v7a?

Пожалуйста, проясните мои сомнения.

2 ответа 2

Вот мои неполные краткие заметки по этому вопросу, но их достаточно, чтобы ответить на ваш вопрос.

НАБОР ИНСТРУКЦИЙ:

Процессоры изготавливаются из полупроводниковых кристаллов, обычно из монокристаллического кремния электронного класса.Они не знают английского или любого другого человеческого языка, они понимают только 0 и 1. Таким образом, разработчик процессора сообщает нам, в какой последовательности нулей и единиц мы можем проинструктировать этот конкретный процессор. Этот числовой язык инструкций стандартизирован как машинный язык, а набор машинных инструкций называется набором инструкций. Процессор может действовать только с определенным типом (типами) набора инструкций.
Наборы инструкций могут быть 8-, 16-, 32- или 64-разрядными (определяют, сколько инструкций процессор может обрабатывать одновременно), последние 2 – распространенные в наши дни.

ЯЗЫКИ НИЗКОГО УРОВНЯ:

Но написание программного кода (инструкций) непосредственно на машинном языке (исполняемом файле) практически невозможно, потому что на написание и отладку достаточно большой программы (которую в наши дни мы можем написать за несколько часов) уйдут годы. Поэтому, чтобы облегчить жизнь программистам, был разработан язык ассемблера, по-прежнему ориентированный на процессор, но относительно простой для понимания. Код, написанный на языке ассемблера, преобразуется в машинный код ассемблером — программой, написанной на машинном языке. Оба они называются языками низкого уровня.

ЯЗЫКИ ВЫСОКОГО УРОВНЯ:

Чтобы еще больше упростить взаимодействие человека с аппаратным обеспечением, были разработаны языки высокого уровня, которые не привязаны к определенному набору инструкций (обозначающему определенную архитектуру). Они идентичны человеческим языкам, поэтому их легко писать, понимать, отлаживать и применять к различным архитектурам. Код, написанный на языке высокого уровня, преобразуется в язык низкого уровня компилятором — программой, написанной на языке низкого уровня. Одним из наиболее часто используемых языков высокого уровня является C. Но иногда код предварительно не компилируется в машинный код, а выполняется напрямую (или компилируется во время выполнения) интерпретатором. Java — это один из таких языков «напиши один раз, запусти где угодно» (WORA), который компилируется в байт-код, а затем интерпретируется виртуальной машиной — снова скомпилированной программой.

ДВОИЧНЫЙ ИНТЕРФЕЙС ПРИЛОЖЕНИЯ (ABI):

Поскольку архитектурно-независимая программа (код) может быть преобразована в архитектурно-зависимый код для любого процессора, компилятор обязан позаботиться обо всех требованиях конкретной архитектуры. Это то, что определяет Application Binary Interface (ABI). Проще говоря, ABI представляет собой одну или несколько конкретных архитектур. Дополнительные сведения о встроенных ABI требуют понимания этапов сборки и компиляции; объектный код, Executable and Linkable Format (ELF), статическое (архивирование) и динамическое связывание библиотек и т.д.

Теперь перейдем к вашему вопросу:

ЧТО ТАКОЕ x86 И ARM?

x86 — это семейство наборов инструкций, в основном разработанное и произведенное Intel и AMD. ARM — еще одно семейство, разработанное одной компанией ARM Holdings и лицензированное многими производителями встраиваемых решений, включая Qualcomm, Mediatek, Samsung и Huawei. Snapdragon, Exynos и Kirin — их торговые марки. Они не являются производителями процессоров, но у них есть лицензии на включение процессоров ARM в собственные схемы System on Chip (SoC).

ЧТО ТАКОЕ SoC?

Система на кристалле (SoC) – это небольшая схема, включающая процессоры и другие компоненты, такие как графический процессор, оперативная память, флэш-память/eMMC (эквивалент жесткого диска или твердотельного накопителя), модуль Wi-Fi и Bluetooth, подключение USB, UART (последовательные порты). ), JTAG (протокол последовательной связи очень низкого уровня), GPS, модемы (для сотовой связи) и, возможно, другие.

ABI ARM:

Хотя большая часть приложений для Android написана на Java, можно программировать на родных языках, таких как C и C++, которые необходимо компилировать. Android предоставляет собственный комплект разработки (NDK), включающий (библиотеки, файлы заголовков и) компилятор, который может компилировать код для нескольких ABI, включая armeabi-v7a ( armhf в сообществе Linux) и x86 .

Приложение для Android (Java) само по себе не зависит от конкретной архитектуры. В процессе сборки приложения Android SDK преобразует исходный код Java в байт-код ( файлы .class ), а затем компилирует его в файл Dalvik EXecutable ( .dex ), который упакован с файлами .apk. Этот байт-код Dalvik интерпретируется и запускается в отдельном экземпляре виртуальной машины Dalvik / ART для каждого приложения процессом Zygote. Или он может быть постоянно скомпилирован в собственный машинный код (.odex или .oat) в соответствии с архитектурой устройства во время установки приложения (или позже). Но если файл apk (zip) дополнительно содержит двоичные файлы/библиотеки ELF, они зависят от архитектуры. Разработчики обычно включают в свои приложения нативные библиотеки для разных архитектур.

Нативные приложения/программы/двоичные файлы/исполняемые файлы/библиотеки, созданные с помощью наборов компиляторов, ориентированных на ARM Embedded ABI v7a (armeabi-v7a), можно запускать в профиле приложения 7-й версии процессоров ARM (Armv7-A).
Код, скомпилированный с помощью инструментальных цепочек, предоставленных другими поставщиками и ориентированный на ту же архитектуру (хотя и с другими именами ABI), также должен работать на устройствах Android.

32-БИТ. ПРОТИВ. 64-БИТ:

Процессор ARM может быть 32-разрядным или 64-разрядным.Это зависит от производителей SoC, что они хотят построить со своей встроенной системой, например. Snapdragon может быть 32-битным или 64-битным. 32-разрядные процессоры ARM были улучшены для повышения производительности, и были добавлены новые возможности от версии 2 до версии 7. 64-разрядная поддержка была введена в ARMv8.

Чтобы узнать, является ли устройство 32-разрядным или 64-разрядным, необходимо проверить характеристики его SoC, а затем его процессора. Например, SoC в Redmi Note 4 — это Qualcomm Snapdragon 625 (MSM 8953), который содержит процессор Cortex-A53. Из технических характеристик Cortex-53 видно, что он основан на архитектуре ARMv8, которая может обрабатывать 2 типа наборов инструкций: aarch64 (который использует Android arm64-v8a ABI) и aarch32 (который использует Android armeabi-v7a ABI, т.е. обратно совместим с ARMv7). ).

Таким образом, он может запускать двоичные файлы/библиотеки, скомпилированные для обоих этих ABI, но не для x86 или armeabi (называемый armel в сообществе Linux; который нацелен на архитектуру ARMv5/v6 и был удален в NDK r17).

При подготовке приложения к выпуску необходимо указать, какую архитектуру процессора платформы поддерживает ваше приложение. Один APK может содержать машинный код для поддержки нескольких разных архитектур. Каждая коллекция кода для конкретной архитектуры связана с бинарным интерфейсом приложения (ABI). Каждый ABI определяет, как этот машинный код должен взаимодействовать с Android во время выполнения. Дополнительные сведения о том, как это работает, см. в разделе Многоядерные устройства и Xamarin.Android.

Как указать поддерживаемые архитектуры

Обычно вы явно выбираете архитектуру (или архитектуры), когда ваше приложение настроено для выпуска. Если ваше приложение настроено для отладки, включены параметры «Использовать общую среду выполнения» и «Использовать быстрое развертывание», которые отключают явный выбор архитектуры.

В Visual Studio щелкните правой кнопкой мыши свой проект в обозревателе решений и выберите "Свойства". На странице «Параметры Android» проверьте раздел «Свойства упаковки» и убедитесь, что параметр «Использовать общую среду выполнения» отключен (отключение этого параметра позволяет вам явно выбрать, какие ABI поддерживать). Нажмите кнопку «Дополнительно» и в разделе «Поддерживаемые архитектуры» отметьте архитектуры, которые вы хотите поддерживать:

Выбор armeabi и armeabi-v7a

Обычно вы явно выбираете архитектуру (или архитектуры), когда ваше приложение настроено для выпуска. Если ваше приложение настроено для отладки, включены параметры Использовать общую среду выполнения Mono и Быстрое развертывание сборки, что предотвращает явный выбор архитектуры.

В Visual Studio для Mac найдите свой проект на панели решений, щелкните значок шестеренки рядом с проектом и выберите Параметры. В диалоговом окне «Параметры проекта» нажмите «Сборка Android». Перейдите на вкладку «Общие» и убедитесь, что параметр «Использовать общую среду выполнения Mono» отключен (отключение этого параметра позволяет явно выбирать, какие ABI поддерживать). Перейдите на вкладку «Дополнительно» и в разделе «Поддерживаемые ABI» проверьте ABI для архитектур, которые вы хотите поддерживать:

Выбор armeabi и armeabi-v7a

Xamarin.Android поддерживает следующие архитектуры:

  • armeabi — процессоры на базе ARM, поддерживающие как минимум набор инструкций ARMv5TE. Обратите внимание, что armeabi не является потокобезопасным и не должен использоваться на многопроцессорных устройствах.

Начиная с Xamarin.Android 9.2, armeabi больше не поддерживается.

armeabi-v7a — ЦП на базе ARM с аппаратными операциями с плавающей запятой и многопроцессорными (SMP) устройствами. Обратите внимание, что машинный код armeabi-v7a не будет работать на устройствах ARMv5.

arm64-v8a — процессоры на основе 64-битной архитектуры ARMv8.

x86 — процессоры, поддерживающие набор инструкций x86 (или IA-32). Этот набор инструкций аналогичен набору инструкций Pentium Pro, включая инструкции MMX, SSE, SSE2 и SSE3.

ЦП x86_64, поддерживающие 64-разрядный набор инструкций x86 (также называемый x64 и AMD64).

Xamarin.Android по умолчанию использует armeabi-v7a для выпускных сборок. Этот параметр обеспечивает значительно лучшую производительность, чем armeabi. Если вы ориентируетесь на 64-разрядную платформу ARM (например, Nexus 9), выберите arm64-v8a . Если вы развертываете приложение на устройстве x86, выберите x86. Если целевое устройство x86 использует 64-разрядную архитектуру ЦП, выберите x86_64 .

Ориентация на несколько платформ

Для таргетинга на несколько архитектур ЦП можно выбрать более одного ABI (за счет увеличения размера файла APK). Вы можете использовать параметр «Создать один пакет (.apk) для каждого выбранного ABI» (описанный в разделе «Установка свойств упаковки»), чтобы создать отдельный APK для каждой поддерживаемой архитектуры.

Вам не нужно выбирать arm64-v8a или x86_64 для работы с 64-разрядными устройствами; 64-разрядная поддержка не требуется для запуска вашего приложения на 64-разрядном оборудовании. Например, 64-разрядные устройства ARM (например, Nexus 9) могут запускать приложения, настроенные для armeabi-v7a. Основное преимущество поддержки 64-разрядных систем — это возможность для вашего приложения обращаться к большему объему памяти.

С августа 2018 года новые приложения должны будут поддерживать уровень API 26, а с августа 2019 года приложения должны будут предоставлять 64-разрядные версии в дополнение к 32-разрядной версии.

Дополнительная информация

В некоторых случаях может потребоваться создать отдельный APK для каждой архитектуры (чтобы уменьшить размер APK или потому что в вашем приложении есть общие библиотеки, специфичные для конкретной архитектуры ЦП). Дополнительные сведения об этом подходе см. в разделе Сборка APK-файлов для ABI.

< бр />

Кэмерон Саммерсон


Кэмерон Саммерсон
главный редактор/специалист по обзору

Кэмерон Саммерсон – бывший главный редактор журнала Review Geek, а также советник редактора How-To Geek и LifeSavvy. Он освещал технологии в течение десяти лет и за это время написал более 4000 статей и сотни обзоров продуктов. Его публиковали в печатных журналах, а New York Times цитировала как эксперта по смартфонам. Подробнее.


Если вы когда-нибудь пытались загрузить приложение для загрузки неопубликованных приложений на свой телефон Android, то знаете, как это может быть запутанно. Часто существует несколько версий одного и того же приложения, предназначенных для разных устройств. Как же узнать, какая из них подходит?

Понимание различных версий файлов

Если вы читаете это, скорее всего, вы пытаетесь загрузить приложение с APK Mirror, который является легитимным сайтом для размещения APK-файлов, доступных бесплатно в Play Store. Это отличный вариант, если приложение, которое вы хотите, имеет географические ограничения, недоступно для вашего устройства или имеет обновление, которое еще не добавлено в вашу учетную запись. Хотя вам также может понадобиться эта информация при загрузке вещей с XDA Developers или других источников.

Если вы обнаружите, что это именно то, что вам нужно, то попытка определить правильную загрузку для вашего телефона может оказаться непростой задачей. Вам не нужно беспокоиться об этом, если приложение, которое вы просматриваете, имеет только одну версию, но некоторые приложения имеют несколько доступных версий — например, у YouTube есть 40 различных вариантов. Это когда вам нужно знать, какая версия лучше всего подходит для вашего телефона.

Как правило, сведения делятся на три основные категории:

С технической точки зрения правильное определение плотности пикселей должно означать PPI или количество пикселей на дюйм. Но поскольку в APK Mirror (и других) это называется DPI, мы будем придерживаться относительной терминологии.

ARM и x86

Хотя версия Android и DPI довольно просты, архитектура процессора — это совсем другая история. Я сделаю все возможное, чтобы объяснить это как можно проще.

  • ARM: Прежде всего, это архитектура мобильного процессора, на которой сейчас работает большинство телефонов. Snapdragon от Qualcomm, Exynos от Samsung и мобильные чипы MediaTek — все это примеры процессоров ARM. Большинство современных чипов являются 64-разрядными или ARM64.
  • x86: это спецификация архитектуры чипов Intel. Несмотря на то, что Intel доминирует на рынке компьютеров, эти чипы гораздо реже используются в телефонах Android. x86_64 относится к 64-разрядным чипам Intel.

Эта информация особенно важна, поскольку файлы x86 и ARM несовместимы друг с другом — вы должны использовать версию, разработанную для конкретной архитектуры вашего телефона.

Точно так же, если на вашем телефоне установлен 32-разрядный процессор, 64-разрядный APK не будет работать. Однако 64-разрядные процессоры обратно совместимы, поэтому 32-разрядный APK будет нормально работать на 64-разрядном процессоре.

Как найти правильную информацию о вашем устройстве

Знаю, знаю, это сбивает с толку. Хорошей новостью является то, что есть простой способ узнать всю информацию о вашем устройстве с помощью приложения Droid Hardware Info. Это бесплатное приложение в Play Маркете, и оно расскажет вам практически все, что вам нужно знать о вашем телефоне.

Давайте, отдайте его, установите и запустите. Мы покажем вам, где найти именно то, что вы ищете.

Чтобы узнать значение DPI, посмотрите запись Software Density в разделе Display.


Для версии Android см. версию ОС в разделе "Устройство". Это явно отображает номер версии.


Чтобы получить информацию об архитектуре, перейдите на вкладку "Система" и проверьте записи "Архитектура ЦП" и "Наборы инструкций" на вкладке "Процессор". Это не так прямолинейно, как другие, поскольку в нем явно не указано «arm64» или что-то подобное, поэтому вам придется немного читать между строк.


Во-первых, если вы видите "64" в названии архитектуры, вы можете быть уверены, что это 64-разрядное устройство. Достаточно легко. Чтобы выяснить, ARM это или x86, вы посмотрите на раздел «Набор инструкций» — опять же, вы просто ищете здесь основную информацию, например, буквы «arm».


Например, на моем Pixel 2 XL (скриншоты выше) совершенно ясно, что это устройство ARM64. С Nexus 5, однако, все не так ясно: мы видим, что это ARM, но явно не показывает, что это 32-битный процессор. В этом случае мы можем с уверенностью предположить, что это 32-разрядный чип, поскольку он не определяет 64-разрядную архитектуру.


Выбор файла для загрузки

Имея это в виду, давайте вернемся к нашему примеру с YouTube выше. Мы рассмотрим множество версий YouTube на APK Mirror и выясним, какая именно загрузка подходит для моего Pixel 2 XL. Имея информацию об устройстве, мы знаем, что оно работает под управлением 64-разрядного процессора ARM, имеет разрешение 560 точек на дюйм и работает под управлением Android 8.1.

Сопоставить тип процессора и версию Android — это arm64 и Android 5.0+. Но для разрешения 560 dpi конкретного варианта нет.

Итак, у нас есть два основных варианта на выбор: самый высокий доступный DPI — в данном случае 480 или «nodpi».

В этом случае я рекомендую использовать вариант nodpi, так как он содержит все доступные ресурсы для охвата всего диапазона DPI. Так почему бы не выбрать этот, несмотря ни на что? Из-за размера файла — поскольку он содержит ресурсы для работы практически с любым DPI, это файл гораздо большего размера. Если вы можете найти тот, который идеально соответствует DPI вашего устройства, всегда используйте его. В противном случае вы также можете выбрать тот, который немного выше, и все в порядке.

Однако в нашем тестовом случае я не уверен, что версия с разрешением 480 DPI будет выглядеть так же хорошо, как загрузка nodpi, поскольку телефон имеет разрешение 560 DPI. В этом случае больший размер файла стоит компромисса.

Изучить все тонкости вашего устройства довольно просто. И, к счастью, как только вы разберетесь с этой информацией, вам больше не придется беспокоиться об этом, пока вы не купите новый телефон.

  • › Как узнать, какая у вас модель телефона Android
  • › Как загрузить APK-файлы на Chromebook без режима разработчика
  • › Как загрузить приложения, которых больше нет в App Store вашего телефона
  • › Изнашиваются ли графические процессоры при интенсивном использовании?
  • › Прочтите это перед покупкой планшета Amazon Fire
  • › Первый помощник Google: смерть Google Now
  • › Как не дать соседям украсть ваш Wi-Fi
  • › Почему талисман Linux — пингвин?

Читайте также: