Рекомендации по 32/64-разрядной платформе
Хотя iOS и macOS исторически поддерживают 32 и 64-разрядные приложения, Apple постепенно устарела 32-разрядная поддержка.
По состоянию на iOS 11 32-разрядные приложения больше не будут запускаться, и все отправки в App Store должны поддерживать 64-разрядную версию.
Начиная с января 2018 года новые приложения, отправленные в Mac App Store, должны поддерживать 64-разрядную версию, а существующие приложения должны обновляться к июня 2018 г.
Классический API Xamarin (XamMac.dll
и monotouch.dll
) поддерживает только 32-разрядные приложения. Однако новые приложения Xamarin.iOS и Xamarin.Mac используют унифицированный API (Xamarin.iOS
и Xamarin.Mac
) по умолчанию и могут при необходимости использовать как 32, так и 64-разрядные.
iOS
Включение 64-разрядных сборок приложений Xamarin.iOS
Предупреждение
Этот раздел включается по историческим причинам и помогает перемещать старые проекты Xamarin.iOS в единый API и поддерживать 64-разрядную версию. Все новые проекты Xamarin.iOS будут использовать единый API и по умолчанию нацелены на 64-разрядный.
Для мобильных приложений Xamarin.iOS, преобразованных в единый API, разработчики должны вручную обновить параметры сборки до 64-разрядной версии:
На панели решений дважды щелкните проект приложения, чтобы открыть окно "Параметры проекта".
Выберите сборку iOS.
Для симулятора i Телефон в раскрывающемся списке поддерживаемых архитектур выберите x86_64 или i386 + x86_64:
Для физических устройств выберите одно из доступных сочетаний ARM64 :
Щелкните OK.
Выполните чистую сборку.
ARMv7s поддерживается только процессором A6, включенным в i Телефон 5 (или больше). Код ARMv7 быстрее и меньше, чем ARMv6, работает только с i Телефон 3GS и более поздними версиями, и требуется Apple при нацеливание на iPad или минимальную версию iOS 5.0. ARMv6 работает на всех устройствах, но больше не поддерживается компилятором, который поставляется с Xcode 4.5 и более поздними версиями.
Arm64 требуется для поддержки iOS 8 на i Телефон 6 или других 64-разрядных устройствах и потребуется Apple при отправке новых или обновлений приложений выхода в iTunes App Store.
Полный обзор возможностей различных устройств iOS проверка документ о совместимости устройств Apple.
Увеличение 64-разрядного и двоичного размера
Во время перехода Apple с 32-разрядной до 64-разрядной версии приложения iOS должны работать как на 32-разрядном, так и 64-разрядном оборудовании. Из-за этого унифицированный API Xamarin позволяет разработчикам использовать оба.
Назначение 32-разрядных и 64-разрядных архитектур значительно увеличит размер приложения. Однако это позволит новым устройствам запускать оптимизированный код, сохраняя поддержку старых устройств.
Внимание
Если при отправке приложения iOS в iTunes App Store появится следующее сообщение: "ПРЕДУПРЕЖДЕНИЕ ITMS-9000: отсутствует 64-разрядная поддержка. Начиная с 1 февраля 2015 г. новые приложения iOS, отправленные в App Store, должны включать 64-разрядную поддержку и создаваться с помощью пакета SDK для iOS 8, включенного в Xcode 6 или более поздней версии. Чтобы включить 64-разрядную версию проекта, рекомендуется использовать параметр сборки Xcode по умолчанию "Стандартные архитектуры" для создания одного двоичного файла с 32-разрядным и 64-разрядным кодом". Вам нужно переключить поддерживаемые архитектуры на одну из доступных комбинаций ARM64 (как показано выше), перекомпилировать и повторно отправить.
Mac
Внимание
Начиная с января 2018 года все новые приложения Mac, отправленные в Mac App Store, должны поддерживать 64-разрядную версию. Существующие приложения Mac App Store и их обновления должны поддерживать 64-разрядную версию, начиная с июня 2018 года. Ознакомьтесь с объявлением Apple и руководством по обновлению приложений Xamarin.Mac до 64-разрядных версий.
Большинство современных компьютеров Mac поддерживают 32-разрядные и 64-разрядные приложения. MacOS 10.6 (Snow Leopard) была последней операционной системой для запуска в 32-разрядных системах. Большинство компьютеров Mac, выпущенных с 2010 года, поддерживают обе системы.
В отличие от iOS, многие новые платформы, представленные в последних версиях macOS, поддерживаются только в 64-разрядном режиме (CloudKit, EventKit, GameController, LocalAuthentication, MediaLibrary, Multipery Подключение ivity, NotificationCenter, GLKit, SpriteKit, Social и MapKit, среди прочего).
Унифицированный API позволяет разработчикам выбирать, какие приложения они хотят создавать: 32-разрядную или 64-разрядную версию.
32-разрядные приложения будут работать на 32-разрядных и 64-разрядных компьютерах Mac, имеют адресное пространство, ограниченное 32 битами, и требуют, чтобы все библиотеки были 32 битами.
Обычно этот режим используется, если у вас есть 32-разрядные зависимости, которые не выполняются в 64-разрядном режиме, если вы хотите скачать меньше или нет преимуществ производительности при переходе на 64-разрядную версию.
Этот режим ограничивается, так как вы не сможете использовать множество платформ, доступных в macOS Mavericks и macOS Yosemite.
64-разрядные приложения будут работать только на 64-разрядных устройствах Mac.
Для Mac это предпочтительный режим работы, так как большинство mac в настоящее время поддерживают 64-разрядный режим, и у вас есть доступ к полному набору платформ, предоставляемых Apple.
Включение 64-разрядных сборок приложений Xamarin.Mac
Сведения о создании 64-разрядного приложения с помощью Xamarin.Mac см. в руководстве по обновлению приложений Xamarin.Mac до 64-разрядного руководства.