Cpu abi что это

Ваш ABI, скорее всего, неверен

Cpu abi что это. Смотреть фото Cpu abi что это. Смотреть картинку Cpu abi что это. Картинка про Cpu abi что это. Фото Cpu abi что это

ABI, или двоичный интерфейс приложения (Application Binary Interface), определяет способ взаимодействия двоичных файлов друг с другом на конкретной платформе и включает соглашение о вызовах. Большинство ABI имеют один конструктивный недостаток, который снижает производительность.

Давайте начнем с рассмотрения ABI System V для процессоров линейки x86. ABI классифицирует аргументы функции по ряду различных категорий; мы будем рассматривать только две:

INTEGER: Этот класс состоит из целочисленных типов, которые помещаются в один из регистров общего назначения.

MEMORY: Этот класс состоит из типов, которые будет переданы в память и возвращены через стек.

Я не буду подробно описывать правила классификации аргументов; достаточно сказать, что в общем смысле:

Целые числа, указатели и небольшие структуры имеют класс INTEGER и передаются в регистры.

Если структура слишком большая, она имеет класс MEMORY и передается в стек.

Если аргументов слишком много, те, которые не помещаются в регистры, будут переданы в стек.

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

Но что в этом плохого? Конечно, мы можем просто делать то, что делали во времена наивных компиляторов, и передавать структуры по указателю. К сожалению, это больше не работает; компиляторы сейчас умны, и им не нравится, когда объекты имеют псевдонимы.

И действительно, ABI должен поступать правильно по умолчанию. void foo ( struct bla ) намного легче читать, чем void foo ( const struct bla *restrict ), не говоря уже о том, что он лучше передает намерение и фактически обеспечивает более сильную семантическую гарантию.

Что ж, такова System V. Как обстоят дела с другими ABI? Microsoft похожа, но она передает структуры с указателем:

Структуры или объединения [не малых] размеров передаются как указатель на память, выделенную вызывающей стороной.

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

Больше ABI! ARM (извините, AAA arch 64):

Если тип аргумента является составным типом, размер которого превышает 16 байт, то аргумент копируется в память, выделенную вызывающей стороной, и аргумент заменяется указателем на копию.

RISC-V:

Агрегаты размером более 2×XLEN бит [примечание: какого черта вы говорите о битах?] передаются по ссылке и заменяются в списке аргументов адресом.

Аргументы, переданные по ссылке, могут быть изменены вызываемой стороной.

PowerPC:

Все [неоднородное] агрегаты передаются в последовательные регистры общего назначения (GPR), в регистры общего назначения и в память, или в память.

MIPS n32:

Структуры (structs), объединения (unions),или другие составные типы рассматриваются как последовательность двойных слов (doublewords), и передаются в целые регистры или регистры с плавающей запятой, как если бы они были простыми скалярными параметрами в той степени, в которой они помещаются, с любым избытком в стеке, упакованным в соответствии с обычной структурой памяти объекта.

Все это повторения одних и тех же двух ошибок.

Правильно установленный ABI должен передавать большие структуры по immutable ссылке, по большому счету избегая копирования. В случае, если требуется копия, это обычно происходит только один раз на вызываемой стороне, вместо того, чтобы повторяться каждой вызывающей стороной. Вызываемая сторона также обладает большей гибкостью и может копировать только те части структуры, которые фактически изменяются.

Источник

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

Android CPU ABI

Кратко об ABI

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

Типичный ABI содержит следующую информацию:

Несколько Android CPU ABI

Архитектура процессораописание
armeabiARM v5TE 5-го поколения, использующий программное вычисление с плавающей запятой, совместим со всеми устройствами ARM, высокая универсальность, низкая скорость
armeabi-v7aARM v7 7-го поколения, использующий аппаратные операции с плавающей запятой, с расширенными расширенными функциями
arm64-v8a8-е поколение, 64-битное, включая AArch32 и AArch64, два состояния выполнения, соответствующие 32, 64-битным
x86Intel 32 бит, обычно используется для планшетов
x86_64Intel 64 бит, обычно используется для планшетов
mipsМеньше контактов
mips64Меньше контактов

Установите соответствующую поддержку для APK

Просмотр ABI процессора

Обычно мы можем просмотреть архитектуру ABI, поддерживаемую ЦП, следующим образом:

Просмотр через команду adb

1. Подключаем телефон к компу
2. Откройте командное окно cmd и введите команду adb shell.
3. Затем введите команду cat / proc / cpuinfo.

Источник

Установить не удалось CPU ABI несовместимый на устройстве с помощью intellij

Я видел некоторые вопросы об этом, но ни с реальными ответами, ни с деталями. Вот мой случай:

У меня есть приложение, которое использует Google Maps API v2, который работает просто отлично. Недавно я узнал, что не могу установить его на этой Не устройство на основе ARM.

чтобы прибить проблему, я работаю с образцами Google Maps, предоставленными с SDK (sdkextrasgooglegoogle_play_servicessamples)

что дает мне то же сообщение об ошибке во время установки:

Я получаю это сообщение только на реальном устройстве с помощью Intellij (12.1.1)

он отлично работает как с Eclipse на реальном устройстве, так и с Intellij на эмуляторе, настроенном с CPU: Intel Atom (x86)

любая помощь будет высоко ценится!

обновление

как и ожидалось, то же самое происходит с Android Studio

3 ответов

по умолчанию, IntelliJ предполагает, что libs папка в корне модуля Android содержит собственные библиотеки, даже если она просто содержит банки. Таким образом, он упаковывает APK, делая его похожим на родные библиотеки. У меня просто была аналогичная проблема, когда мое приложение не имело собственного кода и работало на эмуляторе по умолчанию, но получило предупреждение ABI при установке на эмулятор Genymotion. Чтобы исправить это, скажите IntelliJ (или Android Studio), что ваши библиотеки не являются родными код:

последний Genymotion не будет поддерживать двоичный ARM. Если у вас есть собственный код, скомпилированный для ARM, вы можете использовать Genymotion-ARM-Translation. Просто перетащите этот файл в домашнюю папку Genymotion и перезагрузитесь.

В Android studio исправьте эту проблему:

1 Скачать Genymotion-ARM-Translation_v1.1.zip

2 перетащите zip-файл в работающее виртуальное устройство и нажмите ok

3 перезапустить виртуальное устройство Genymotion

Источник

Cpu abi что это

2. Как скачать игры, которых нет в AppGallery: Игры

3. Узнать как установить Google сервисы можно здесь: Установка сервисов Google на HUAWEI

4. Если вы не хотите ставить сервисы Google, но хотите иметь на телефоне полноценный Google Play: Легкий способ установки недостающих игр и приложений через эмулятор.

Несмотря на обилие вариантов, принцип скачивания одинаков на всех площадках. Разберём на примере APKPure, но наша инструкция подходит и для APKMirror, и для Installer. Заходим на сайт, ищем строку поиска — она вверху. Затем пишем название нужного приложения — например, WhatsApp. Сайт тут же предлагает соответствующий архив. Осталось тапнуть по кнопке скачивания. Если вы впервые что-то ставите из браузера, смартфон попросит разрешение.

Cpu abi что это. Смотреть фото Cpu abi что это. Смотреть картинку Cpu abi что это. Картинка про Cpu abi что это. Фото Cpu abi что это

Дожидаемся скачивания APK — файл весит 30 МБ. После чего WhatsApp автоматически начнёт установку, а от нас потребуется лишь разрешить работу его сервисных служб. Всё, теперь программой можно пользоваться. Instagram ставится по точно такой же схеме.

Другие приложения таким образом качать можно?
Да. Всё, что хранится на APKPure или Installer, можно установить в два нажатия. Например, опальный в России Telegram. Или Facebook и Gmail. Мы тестировали этот способ на HUAWEI P40 Lite, но он одинаково подходит для любых других смартфонов.

Итого: если вы думали над покупкой современных смартфонов от HUAWEI, но боялись остаться без любимых приложений, успокойтесь. Любой сервис легко ставится за 30 секунд.

Источник

Android Virtual Device (AVD) – какой CPU / ABI я должен выбрать?

При создании AVD существует три варианта выбора для CPU / ABI:

Каковы различия и какие из них выбрать? Есть ли тот, который охватывает большинство устройств?

Согласно документации разработчика Android, вы должны фактически создать виртуальное устройство для всех фреймворков и платформ, на которых вы собираетесь запускать код, поскольку большинство мобильных устройств на рынке в настоящее время работают на архитектуре ARM. Вы все равно должны проверить свои Код на отдельном виртуальном устройстве для каждого уровня фреймворка, который поддерживает ваш код.

Изображение системы
Рекомендуемые. Хотя у вас может быть одно или несколько устройств на базе Android, на которых можно протестировать ваше приложение, маловероятно, что у вас есть устройство для каждой версии Android, поддерживаемого вашим приложением. Хорошая практика загрузки системных изображений для всех версий Android, поддерживаемых вашим приложением, и тестирования вашего приложения на них с помощью эмулятора Android.

90% мобильных устройств оснащено ARM. Так что это будет лучший вариант

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

Atom Emulation работает быстрее, поэтому я буду использовать их для разработки и окончательной проверки в режиме arm или с помощью реального телефона.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *