What is armeabi android

Русские Блоги

Android arm64-v8a, armeabi-v7a, armeabi, x86 подробное объяснение

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

перед началом

Прежде чем начать, вам нужно знать lib, libs и т. Д.
1. lib и libs
Ссылки на те, что помещены в lib, включены в библиотеки.
Файлы, помещенные в библиотеки, будут автоматически включены редактором. Так что не ставьте API в библиотеках.
Содержимое библиотеки lib не будет упаковано в APK, содержимое библиотеки li будет упаковано в APK

Два . так библиотека
Библиотека динамических ссылок, скомпилированная из NDK.
Некоторые важные алгоритмы шифрования или базовые протоколы обычно пишутся на языке c, а затем вызываются в java. Это позволяет избежать просмотра исходного кода приложения после декомпиляции.

Три . как хранить так библиотеки
Правильная позиция для размещения файла .so — это два предложения:
• Чтобы уменьшить размер apk, оставьте только две папки armeabi и armeabi-v7a и убедитесь, что число .so в этих двух папках одинаково
• Для стороннего .so, который предоставляет только версию armeabi, сделайте копию в папку armeabi-v7a
Правила хранения так:
Вы должны предоставить .so файлы, оптимизированные для каждого ABI, насколько это возможно, но поддерживаются все или все: вы не должны смешивать их. Вы должны предоставить соответствующий файл .so для каждого каталога ABI.
По вопросам хранения вы можете посмотретьЭта
4. Какова роль armeabi и т. Д. Под libs
хранит библиотеку .so, которая в основном совместима с различными устройствами, а также, как можно сказать, особенно совместима с архитектурой ЦП различных телефонов Android.
Давайте потянем процессор Android
Тип процессора устройства Android (часто называемый «ABI»)

Введение в архитектуру

Ранние системы Android почти только поддерживали архитектуру процессора ARMv5, а затем были разработаны для поддержки семи различных архитектур процессоров: ARMv5, ARMv7 (с 2010 года), x86 (с 2011 года), MIPS (с 2012 года), ARMv8 , MIPS64 и x86_64 (с 2014 года), каждый связан с соответствующим ABI.
Двоичный интерфейс приложения (двоичный интерфейс приложения) определяет, как двоичные файлы (особенно файлы .so) работают на соответствующей системной платформе, от используемого набора инструкций, выравнивания памяти до доступного Библиотека системных функций. В системе Android каждая архитектура процессора соответствует ABI: armeabi, armeabi-v7a, x86, mips, arm64-v8a, mips64, x86_64.
Но последние официальные документы Google удалили mips и armv5, как показано на рисунке:

Анализ каждой версии выглядит следующим образом:
• mips / mips64: редко используется на мобильных телефонах и может игнорироваться (последняя документация Google больше не поддерживается)
• x86 / x86_64: мобильные телефоны с архитектурой x86 будут включать в себя инструмент динамического транскодирования набора инструкций под названием Houdini, предоставляемый Intel для обеспечения совместимости с arm .so, затем рассмотрите x86 1% или менее Доля рынка, две .so, связанные с x86, также незначительны
• armeabi: ARM v5. Это довольно старая версия, в которой отсутствует аппаратная поддержка для вычислений с плавающей запятой, и имеются узкие места в производительности, когда требуются большие объемы вычислений.
• armeabi-v7a: ARM v7
• arm64-v8a: поддержка 64-бит,Текущая основная версияХотя многие блоги в Интернете говорят, что версия v7 является основной версией, я лично протестировал многие мобильные телефоны, все из которых основаны на архитектуре arm64-v8a. Тестовые модели включают Xiaomi 5-Xiaomi 9, Huawei P30, Huawei mate10 и Charm Blue 2. архитектура v8
Запрос командной строки ЦП мобильного телефона:

Нет картины без правды:

Существует только один неизвестный телефон с операционной системой Android 4.3, который использует архитектуру v7.

Для 64-битных телефонов и 64-битных процессоров

ARM64-битный процессор и компьютерный 64-битный процессор — это две совершенно несовместимые концепции: он не является 64-битной нативно совместимой с 32-битными программами, но работает 32 через 32-битную архитектуру, интегрированную в 64-битный процессор. Битовая программа. Проще говоря, он не запускает 32-разрядные программы в 64-разрядной форме, но запускает 32-разрядные программы в 32-разрядной форме.

Поскольку новый 64-разрядный процессор в настоящее время включает в себя две архитектуры, а технология процесса не была улучшена (28 нм), в то же время на мобильных телефонах и планшетах площадь чипа строго ограничена и не может быть чрезмерно увеличена, что приводит к среднему распределению 64-разрядных процессоров ARM. Количество транзисторов в каждой архитектуре резко сократилось, то есть из 32-разрядной архитектуры 64-разрядных процессоров для 32-разрядных процессоров с одинаковыми характеристиками они не только не улучшились, но и производительность снизилась в определенном масштабе. Однако производители процессоров должны объяснить потребителям, как лучше продвигать 64-разрядные системы, поэтому производители должны повысить производительность в других аспектах, чтобы компенсировать потери, вызванные сокращением числа транзисторов ЦП. Например: замените более мощный графический процессор, увеличьте пропускную способность памяти, многоядерный виртуальный одноядерный для повышения производительности одноядерного, совместные поставщики программного обеспечения для работы, чтобы изменить веса работы (повысить оценку GPU, снизить вес процессора) и т. Д. Таким образом, приобретая сильные стороны и избегая недостатков и, наконец, попадающих в руки потребителей, они работают с запущенным программным обеспечением, оно действительно улучшилось, пользователи довольны, карманы производителя также выпирают.

Читайте также:  Android studio установка debian

Таким образом, битовый процессор ARM64 более точно называется ARM32 + 64 в строгом смысле слова. По сравнению с битовым процессором ARM32, он имеет место для регресса и возможности для улучшения, но именно из-за регрессии, который стимулировал прогресс ARM Определено, что он внесет смелые и смелые изменения, и это должно быть улучшением. Но действительно ли ARM64 полезен для мобильных телефонов? Я могу только сказать, что это действительно бесполезно в данный момент, но это может произойти в будущем. (Собранный в другом месте) Таким образом, в строгом смысле ARM64-битный процессор более точно называется ARM32 + 64. По сравнению с ARM32-битным процессором он имеет некоторые недостатки и возможности для улучшения, но это из-за Эта регрессия подтолкнула ARM к решимости добиться прогресса, что позволило ему внести радикальные изменения, что, по-видимому, является улучшением. Но действительно ли ARM64 полезен для мобильных телефонов? Я могу только сказать, что это действительно бесполезно в данный момент, но это может произойти в будущем. (Искал в другом месте)

Настоящий 64-разрядный мобильный телефон не просто остается на процессоре. Если его называют 64-разрядным мобильным телефоном только потому, что его процессор 64-разрядный, мы можем без колебаний сказать, что это может быть ложной пропагандой. К счастью, Lenovo Очень умно, когда были выпущены A678t и A805e, они говорили только о телефонах с 64-битным процессором.
«64-разрядный телефон» и «64-разрядный телефон» — это две разные концепции: если процессор содержит 64 архитектурных бита, его можно назвать «64-разрядным процессором» «Мобильный телефон», этот вид мобильного телефона, возможно, не сможет запускать 64-разрядные программы, но используется только для захвата рынка, по сравнению с 32-разрядными мобильными телефонами, преимущество не очевидно.

«64-разрядный мобильный телефон» отличается: он содержит 64-разрядный процессор, 64-разрядную стандартную систему, 64-разрядную виртуальную машину Android и 64-разрядную программу. Это настоящий 64-разрядный мобильный телефон!
Представители Google заявили, что Android уже давно поддерживает 64-разрядные версии, это правда, от Android4.0 до Android4.4, системы Android поддерживают 64-разрядное оборудование, но это Это означает только то, что базовый драйвер поддерживает 64-битные и может работать на 64-битном оборудовании, и ничего более. Однако программное обеспечение, работающее на верхнем уровне, будь то виртуальная машина Dalvik или виртуальная машина ART, является 32-разрядным. Другими словами, до тех пор, пока ваша система мобильной связи работает под управлением Android 4.0-4.4, даже если ваш процессор 64-разрядный, вы можете запускать 32-разрядные программы только на 32-разрядной виртуальной машине, даже если перед вами стоят настоящие 64-разрядные программы, Это не может быть установлено. ,

Однако Google официально объявил об обязательной 64-битной архитектуре в начале этого года.

Еще в январе этого года (2019 г.) Google выпустил уведомление о том, что с 1 августа этого года перечисленные приложения, помимо предоставления 32-разрядных версий, также должны предоставлять 64-разрядные версия.

Следовательно, больше невозможно принудительно использовать только архитектуру armeabi перед проектом.
Что конкретно означает поддержка 64-битной версии?
Если ваше приложение написано полностью на Java или Kotlin и не содержит никакой встроенной поддержки, то это означает, что приложение уже поддерживает 64-битную версию.
Однако в приложении используется любая встроенная поддержка (например, библиотека), поэтому вам необходимо обеспечить разные версии поддержки этих файлов и разных архитектур ЦП.
Следует отметить, что иногда в нашем собственном коде встроенная поддержка действительно не используется, но в нее включены некоторые сторонние библиотеки, используемые в приложении.
В настоящее время наиболее надежным способом является анализ файла APK, созданного окончательной упаковкой, для определения необходимости обеспечения поддержки 64-разрядной архитектуры.

Конфигурация упаковки

Трещина
Эта команда может быть заключена в соответствии с различными правилами, такими как abi, плотность экрана (например, ldpi, hdpi и т. д.)

Включить включено, а исключить не включено. Каждый элемент, включенный в конфигурацию, будет генерировать пакет apk.

Однако эта конфигурация создаст два пакета, один из которых содержит только библиотеку x86 so, а другой — только библиотеку armabi so. Очевидно, не соответствует потребностям

Фильтр ndk
Эта инструкция может быть настроена для упаковки только той библиотеки, которую вы настраиваете, и она не будет упакована, если она не настроена, что очень гибко.

Эта конфигурация упакует библиотеку so из трех пакетов armeabi, armeabi-v71, arm64-v8a в apk, в отличие от split, которая будет воспроизводить apk для каждого пакета.

Источник

Armeabi v7a что это

Недавно мы рассказывали вам о том, как узнать DPI дисплея вашего Android устройства, которое необходимо знать для выбора правильного APK файла приложения, которое вы хотите установить на него вручную. Однако, при этом зачастую нужно знать еще и тип процессора: ARM, ARM64 или x86, который используется в вашем смартфоне или планшете.

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

Читайте также:  Обои для андроид скайлайн

Самым простым способом узнать тип процессора на базе которого выполнен ваш смартфон, планшет или другое Android устройство будет установить на него приложение Droid Hardware Info.

Это приложение доступно для скачивания с этой страницы Google Play Маркет совершенно бесплатно и после его запуска вы увидите на экране смартфона следующую информацию (слева — данные о смартфоне Nexus 5, справа — информация о Nexus 6):

В самой первой строке с наименованием «CPU architecture» вы увидите одно из значений: ARMv7, AArch64 или x86, а в строке «Insructions Set»: armeabi, arm64 или x86abi.

Соответствие этих значений типу вашего процессора приведено ниже:

ARM: ARMv7 или armeabi

ARM64: AArch64 или arm64

x86: x86 или x86abi

Есть еще один достаточно простой способ узнать тип процессора вашего смартфона, планшета или другого устройства, который знаком пользователям Linux

Для этого вам нужно установить на свое устройство из Google Play Маркет приложение Terminal Emulator, запустить его и выполнить следующую команду:

На экране при этом отобразится информация о процессоре в следующей форме:

Как вы уже, наверняка поняли, нам нужна информация из самой первой строки «Processor:»

Xamarin. Android поддерживает несколько архитектур ЦП, включая 32-разрядные и 64-разрядные устройства. В этой статье объясняется, как выбрать для приложения одну или несколько архитектур ЦП, поддерживаемых Android. Xamarin.Android supports several CPU architectures, including 32-bit and 64-bit devices. This article explains how to target an app to one or more Android-supported CPU architectures.

Обзор архитектуры ЦП CPU Architectures Overview

При подготовке приложения к выпуску необходимо указать архитектуру ЦП платформы, которую поддерживает ваше приложение. When you prepare your app for release, you must specify which platform CPU architectures your app supports. Один APK-файл может содержать код для нескольких различных архитектур. A single APK can contain machine code to support multiple, different architectures. Каждая коллекция кода, зависящего от архитектуры, связана с двоичным интерфейсом приложения (ABI). Each collection of architecture-specific code is associated with an Application Binary Interface (ABI). Каждый интерфейс ABI определяет, как должен взаимодействовать этот машинный код с Android во время выполнения. Each ABI defines how this machine code is expected to interact with Android at run time. Дополнительные сведения о том, как это работает, см. в статье многоядерные устройства & Xamarin. Android. For more information about how this works, see Multi-Core Devices & Xamarin.Android.

Указание поддерживаемых архитектур How to Specify Supported Architectures

Как правило, при настройке приложения для выпускавы явно выбрали архитектуру (или архитектуры). Typically, you explicitly select an architecture (or architectures) when your app is configured for Release. Если приложение настроено для отладки, для параметра использовать общую среду выполнения и используются параметры быстрого развертывания , что отключает явный выбор архитектуры. When your app is configured for Debug, the Use Shared Runtime and Use Fast Deployment options are enabled, which disable explicit architecture selection.

В Visual Studio щелкните правой кнопкой мыши проект в Обозреватель решений и выберите пункт свойства. In Visual Studio, right-click on your project under the Solution Explorer and select Properties. На странице Параметры Android проверьте раздел Свойства упаковки и убедитесь, что параметр использовать общую среду выполнения отключен (отключение позволяет явно выбрать, для какой ABI требуется поддержка). Under the Android Options page check the Packaging properties section and verify that Use Shared Runtime is disabled (turning this off allows you to explicitly select which ABIs to support). Нажмите кнопку Дополнительно и в разделе Поддерживаемые архитектурыпроверьте архитектуры, которые требуется поддерживать. Click the Advanced button and, under Supported architectures, check the architectures that you want to support:

Как правило, при настройке приложения для выпускавы явно выбрали архитектуру (или архитектуры). Typically, you explicitly select an architecture (or architectures) when your app is configured for Release. Если приложение настроено для отладки, включаются параметры использовать совместное использование среды выполнения Mono и быстрое развертывание сборок , что предотвращает выбор явной архитектуры. When your app is configured for Debug, the Use shared Mono runtime and Fast assembly deployment options are enabled, which prevent explicit architecture selection.

В Visual Studio для Mac выберите проект на панели решения , щелкните значок шестеренки рядом с проектом и выберите Параметры. In Visual Studio for Mac, locate your project in the Solution pad, click the gear icon next to your project and select Options. В диалоговом окне Параметры проекта щелкните Сборка Android. In the Project Options dialog, click Android Build. Перейдите на вкладку Общие и убедитесь, что параметр использовать общую среду выполнения Mono отключен (отключить этот параметр позволяет явно выбрать, для какой ABI поддерживать). Click the General tab and verify that Use shared Mono runtime is disabled (turning this off allows you to explicitly select which ABIs to support). Перейдите на вкладку Дополнительно и в разделе Поддерживаемые ABIпроверьте ABI для архитектур, которые требуется поддерживать. Click the Advanced tab and, under Supported ABIs, check the ABIs for the architectures that you want to support:

Читайте также:  Как распаковать архив zip для андроида

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

  • armeabi – процессоры на базе ARM, поддерживающие по меньшей мере набор инструкций ARMv5TE. armeabi – ARM-based CPUs that support at least the ARMv5TE instruction set. Обратите внимание, что armeabi не является потокобезопасным и не следует использовать на многопроцессорных устройствах. Note that armeabi is not thread-safe and should not be used on multi-CPU devices.

Начиная с Xamarin. Android 9,2, armeabi больше не поддерживается. As of Xamarin.Android 9.2, armeabi is no longer supported.

ARMEABI-v7a – процессоры на базе ARM с аппаратными операциями с плавающей запятой и устройствами с несколькими ЦП (SMP). armeabi-v7a – ARM-based CPUs with hardware floating-point operations and multiple CPU (SMP) devices. Обратите внимание, что armeabi-v7a машинный код не будет выполняться на устройствах ARMv5. Note that armeabi-v7a machine code will not run on ARMv5 devices.

arm64-v8a – процессоры на основе архитектуры 64-bit ARMv8. arm64-v8a – CPUs based on the 64-bit ARMv8 architecture.

Процессоры x86 –, поддерживающие набор инструкций x86 (или IA-32). x86 – CPUs that support the x86 (or IA-32) instruction set. Этот набор инструкций эквивалентен инструкциям Pentium Pro, включая MMX, SSE, SSE2 и SSE3. This instruction set is equivalent to that of the Pentium Pro, including MMX, SSE, SSE2, and SSE3 instructions.

x86_64 Процессоры, поддерживающие 64-разрядный x86 (также называемый x64 и AMD64). x86_64 CPUs that support the 64-bit x86 (also referred as x64 and AMD64) instruction set.

Для Xamarin. Android по умолчанию используется armeabi-v7a для сборок выпуска . Xamarin.Android defaults to armeabi-v7a for Release builds. Этот параметр обеспечивает значительно большую производительность, чем armeabi . This setting provides significantly better performance than armeabi . Если вы нацелены на платформу 64-разрядной ARM (например, в табличное размещение 9), выберите arm64-v8a . If you are targeting a 64-bit ARM platform (such as the Nexus 9), select arm64-v8a . Если вы развертываете приложение на устройстве x86, выберите x86 . If you are deploying your app to an x86 device, select x86 . Если целевое устройство x86 использует архитектуру с 64-разрядным ПРОЦЕССОРом, выберите x86_64 . If the target x86 device uses a 64-bit CPU architecture, select x86_64 .

Нацеливание на несколько платформ Targeting Multiple Platforms

Чтобы ориентироваться на несколько архитектур ЦП, можно выбрать несколько интерфейсов ABI (за счет увеличения размера файла APK). To target multiple CPU architectures, you can select more than one ABI (at the expense of larger APK file size). Можно использовать параметр создать один пакет (. apk) для каждого выбранного параметра ABI (см. описание в разделе Установка свойств упаковки), чтобы создать отдельный APK для каждой поддерживаемой архитектуры. You can use the Generate one package (.apk) per selected ABI option (described in Set Packaging Properties) to create a separate APK for each supported architecture.

Вам не нужно выбирать arm64-v8a или x86_64 для целевых 64-разрядных устройств. 64-разрядная поддержка не требуется для запуска приложения на 64-разрядном оборудовании. You do not have to select arm64-v8a or x86_64 to target 64-bit devices; 64-bit support is not required to run your app on 64-bit hardware. Например, 64-разрядные устройства ARM (например, в виде хранилища 9) могут запускать приложения, настроенные для armeabi-v7a . For example, 64-bit ARM devices (such as the Nexus 9) can run apps configured for armeabi-v7a . Основное преимущество поддержки 64-разрядной версии заключается в том, чтобы предоставить приложению возможность обращаться к большему объему памяти. The primary advantage of enabling 64-bit support is to make it possible for your app to address more memory.

Начиная с августа 2018 г. новые приложения должны будут использовать API уровня 26, а с августа 2019 г. будет необходимо выпускать 64-разрядные версии приложений в дополнение к 32-разрядным. From August 2018 new apps will be required to target API level 26, and from August 2019 apps will be required to provide 64-bit versions in addition to the 32-bit version.

Дополнительные сведения Additional Information

В некоторых ситуациях может потребоваться создать отдельный APK для каждой архитектуры (чтобы уменьшить размер APK, или потому, что приложение имеет общие библиотеки, характерные для конкретной архитектуры ЦП). In some situations, you may need to create a separate APK for each architecture (to reduce the size of your APK, or because your app has shared libraries that are specific to a particular CPU architecture). Дополнительные сведения об этом подходе см. в разделе Build ABI-пакетов apk. For more information about this approach, see Build ABI-Specific APKs.

armeabi – понятно. Эта архитектура на всех (или почти на всех) реальных гаджетах.
x86 – вроде тоже понятно. Это прежде всего для Genymotion и прочих эмуляторов, где Android x86.

А mips и armeabi-v7a используются где-нибудь?
Вангую, что v7a это просто версия armeabi, почему не ограничиваться простым armeabi?

Источник

Оцените статью