Рекомендации по 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-разрядной версии:

  1. На панели решений дважды щелкните проект приложения, чтобы открыть окно "Параметры проекта".

  2. Выберите сборку iOS.

  3. Для симулятора i Телефон в раскрывающемся списке поддерживаемых архитектур выберите x86_64 или i386 + x86_64:

    Setting Supported architectures to x86_64 or i386 + x86_64

  4. Для физических устройств выберите одно из доступных сочетаний ARM64 :

    Setting Supported architectures to one of the ARM64 combinations

  5. Щелкните OK.

  6. Выполните чистую сборку.

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-разрядного руководства.