Consideraciones sobre la plataforma de 32/64 bits

Aunque iOS y macOS han admitido históricamente aplicaciones de 32 y 64 bits, Apple ha dejado de usar gradualmente la compatibilidad de 32 bits.

A partir de iOS 11, las aplicaciones de 32 bits dejarán de lanzarse, y todas las que se envíen a la App Store deberán ser compatibles con 64 bits.

A partir de enero de 2018, las nuevas aplicaciones que se envíen a la App Store de Mac deberán ser compatibles con 64 bits, y las aplicaciones existentes deberán actualizarse antes de junio de 2018.

La Classic API de Xamarin (XamMac.dll y monotouch.dll) solo admite aplicaciones de 32 bits. Sin embargo, las nuevas aplicaciones de Xamarin.iOS y Xamarin.Mac usan la Unified API (Xamarin.iOS y Xamarin.Mac) de forma predeterminada y, por lo tanto, pueden dirigirse tanto a 32 como a 64 bits, según sea necesario.

iOS

Habilitación de compilaciones de 64 bits de aplicaciones de Xamarin.iOS

Advertencia

Esta sección se incluye por motivos históricos y para ayudar a mover proyectos anteriores de Xamarin.iOS a la Unified API y admitir 64 bits. Todos los nuevos proyectos de Xamarin.iOS usarán la Unified API y el destino de 64 bits de forma predeterminada.

En el caso de las aplicaciones móviles de Xamarin.iOS que se han convertido a la Unified API, los desarrolladores deben actualizar manualmente la configuración de compilación a 64 bits de destino:

  1. En el Panel de solución, haga doble clic en el proyecto de la aplicación para abrir la ventana Opciones del proyecto.

  2. Seleccione compilación de iOS.

  3. Para el simulador de iPhone, en la lista desplegable Arquitecturas admitidas, seleccione x86_64 o i386 + x86_64:

    Setting Supported architectures to x86_64 or i386 + x86_64

  4. Para dispositivos físicos, seleccione una de las combinaciones disponibles de ARM64:

    Setting Supported architectures to one of the ARM64 combinations

  5. Haga clic en OK.

  6. Realice una compilación limpia.

ARMv7s solo es compatible con el procesador A6 incluido en el iPhone 5 (o superior). El código ARMv7 es más rápido y pequeño que el ARMv6, solo funciona con el iPhone 3GS y posteriores, y Apple lo exige para el iPad o una versión mínima de iOS 5.0. ARMv6 funciona en todos los dispositivos, pero ya no es compatible con el compilador enviado con Xcode 4.5 y versiones posteriores.

ARM64 es necesario para admitir iOS 8 en iPhone 6 u otros dispositivos de 64 bits y Apple lo necesitará al enviar aplicaciones nuevas o actualizando aplicaciones de salida en la App Store de iTunes.

Para obtener una visión completa de las funcionalidades de varios dispositivos iOS, consulte el documento compatibilidad de dispositivos de Apple.

Aumento del tamaño binario y de 64 bits

Durante la transición de Apple de 32 bits a 64 bits, las aplicaciones iOS tendrán que ejecutarse en hardware de 32 y 64 bits. Debido a esto, la Unified API de Xamarin permite a los desarrolladores tener como destino ambos.

El destino de arquitecturas de 32 y 64 bits aumentará significativamente el tamaño de una aplicación. Sin embargo, esto permitirá que los dispositivos más recientes ejecuten código optimizado mientras siguen siendo compatibles con dispositivos más antiguos.

Importante

Si recibe el siguiente mensaje al enviar una aplicación de iOS a la App Store de iTunes, "ADVERTENCIA ITMS-9000: Falta compatibilidad de 64 bits. A partir del 1 de febrero de 2015, las nuevas aplicaciones de iOS que se suban a la App Store deberán incluir compatibilidad con 64 bits y estar creadas con el SDK de iOS 8, incluido en Xcode 6 o posterior. Para habilitar los 64 bits en el proyecto, recomendamos usar la configuración de compilación predeterminada de Xcode "Arquitecturas estándar" para compilar un único binario con código de 32 y 64 bits." Debe cambiar las arquitecturas admitidas a una de las disponibles combinación de ARM64 (como se muestra anteriormente), volver a compilar y volver a enviar.

Mac

Importante

A partir de enero de 2018, todas las nuevas apps para Mac que se envíen a la App Store de Mac deberán ser compatibles con 64 bits. Las aplicaciones existentes de la App Store de Mac y sus actualizaciones deben admitir 64 bits a partir de junio de 2018. Consulte el anuncio de Apple y una guía que describe cómo actualizar las aplicaciones de Xamarin.Mac a 64 bits.

La mayoría de los equipos Mac modernos admiten aplicaciones de 32 y 64 bits. MacOS 10.6 (Snow Leopard) fue el último sistema operativo que se ejecutaría en sistemas de 32 bits. La mayoría de los equipos Mac publicados desde 2010 admiten ambos sistemas.

A diferencia de iOS, muchos de los nuevos marcos introducidos en versiones recientes de macOS solo se admiten en modo de 64 bits (CloudKit, EventKit, GameController, LocalAuthentication, MediaLibrary, MultipeerConnectivity, NotificationCenter, GLKit, SpriteKit, Social y MapKit, entre otros).

La Unified API permite a los desarrolladores elegir qué tipo de aplicaciones desean generar: 32 o 64 bits.

Aplicaciones de 32 bits se ejecutarán en equipos Mac de 32 y 64 bits, tienen un espacio de direcciones limitado a 32 bits y requieren que todas las bibliotecas tengan 32 bits.

Normalmente usará este modo si tiene dependencias de 32 bits que no se ejecutan en modo de 64 bits, si desea tener una descarga más pequeña o si no hay ventajas de rendimiento al pasar a 64 bits.

Este modo limita, ya que no podrá usar muchos marcos disponibles en macOS Mavericks y macOS Yosemite.

Aplicaciones de 64 bits solo se ejecutarán en dispositivos Mac de 64 bits.

Para Mac, este es el modo preferido de funcionamiento, ya que la mayoría de los Mac que se usan hoy admiten el modo de 64 bits y tiene acceso al conjunto completo de marcos proporcionados por Apple.

Habilitación de compilaciones de 64 bits de aplicaciones de Xamarin.Mac

Para obtener información sobre cómo compilar una aplicación de 64 bits con Xamarin.Mac, consulte la guía Actualización de aplicaciones unificadas de Xamarin.Mac a 64 bits.