Архитектура процессора
Xamarin.Android поддерживает несколько архитектур ЦП, включая 32-разрядные и 64-разрядные устройства. В этой статье объясняется, как нацелить приложение на одну или несколько архитектур ЦП, поддерживаемых Android.
Обзор архитектур ЦП
При подготовке приложения к выпуску необходимо указать, какую архитектуру ЦП платформы поддерживает ваше приложение. Один APK-файл может содержать код для нескольких различных архитектур. Каждая коллекция кода для конкретной архитектуры связана с двоичным интерфейсом приложения (ABI). Каждый ABI определяет, как этот машинный код должен взаимодействовать с Android во время выполнения. Дополнительные сведения о том, как это работает, см. в разделе "Устройства с несколькими ядрами" и Xamarin.Android.
Указание поддерживаемых архитектур
Как правило, вы явно выбираете архитектуру (или архитектуры) при настройке приложения для выпуска. Если приложение настроено для отладки, включены параметры "Использовать общую среду выполнения" и "Использовать быстрое развертывание", которые отключают явный выбор архитектуры.
В Visual Studio щелкните проект правой кнопкой мыши в Обозреватель решений и выберите "Свойства". На странице "Параметры Android" проверка разделе "Свойства упаковки" и убедитесь, что использование общей среды выполнения отключено (это позволяет явно выбрать, какие ABis поддерживать). Нажмите кнопку "Дополнительно" и в разделе "Поддерживаемые архитектуры" проверка архитектуры, которые требуется поддерживать:
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). Этот набор инструкций эквивалентен тому, что из Инструкций Изумиры, включая 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 (описано в разделе "Задать свойства упаковки").
Вам не нужно выбирать arm64-v8a или x86_64 для 64-разрядных устройств; 64-разрядная поддержка не требуется для запуска приложения на 64-разрядном оборудовании. Например, 64-разрядные устройства ARM (например , Nexus 9) могут запускать приложения, настроенные для armeabi-v7a
. Основное преимущество включения 64-разрядной поддержки заключается в том, чтобы приложение пользовалось большей памятью.
Примечание.
Начиная с августа 2018 г. новые приложения должны будут использовать API уровня 26, а с августа 2019 г. будет необходимо выпускать 64-разрядные версии приложений в дополнение к 32-разрядным.
Дополнительная информация
В некоторых ситуациях может потребоваться создать отдельный APK для каждой архитектуры (чтобы уменьшить размер APK или так как приложение имеет общие библиотеки, относящиеся к определенной архитектуре ЦП). Дополнительные сведения об этом подходе см. в разделе "Сборка API для конкретных ABI".