cpu abi что это такое

Ваш 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 ссылке, по большому счету избегая копирования. В случае, если требуется копия, это обычно происходит только один раз на вызываемой стороне, вместо того, чтобы повторяться каждой вызывающей стороной. Вызываемая сторона также обладает большей гибкостью и может копировать только те части структуры, которые фактически изменяются.

Источник

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

(Воспроизводятся) Как бороться с системной системой CPU / ABI для цели

Нажмите [Computer] на рабочем столе, затем нажмите [Свойства системы] над всплывающим интерфейсом, за которым следуют левая кнопка в панели [Система]. [Изменить настройки]

В это время появится панель [Свойства системы], щелкните [Advanced] выше этой панели, затем выберите переменные среды ниже интерфейса.

Далее, обязательно добавьте переменные среды ниже [User Carriable XXX] [ANDROID_SDK_HOME 】, Не забудьте добавить эту переменную среды в первой коробке переменной окружающей среды, которая может быть предоставлена ​​самими, как показано

Затем перезапустите Eclipse, нажмите Создать симулятор Android, попробуйте успешно

Если вы не можете открыть Android SDK Manager, загрузите три файлы для ARM EABI V7A System Image, Intel X86 Atom System Image Image Image Image.

Когда вы загружаете вышеприведенные три файла, вы должны сначала щелкнуть [Tools] над интерфейсом, затем выберите [Опция], и установите внешнюю сеть соединения, чтобы загрузить.

Попробуйте еще раз создать открытие виртуального машины Android, чтобы успешно создавать виртуальные машины Android!

Источник

Читайте также:  при какой температуре можно стирать наматрасник водонепроницаемый

Установить не удалось 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

Источник

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

Android CPU ABI

Кратко об ABI

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

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

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

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

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

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

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

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

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

Источник

Cpu abi что это такое

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

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

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

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

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

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

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

Источник

Читайте также:  какой ноутбук выбрать для девушки
Сказочный портал