Arquitecturas de CPU
Xamarin.Android admite varias arquitecturas de CPU, incluidos dispositivos de 32 y 64 bits. En este artículo se explica cómo dirigir una aplicación a una o varias arquitecturas de CPU compatibles con Android.
Introducción a las arquitecturas de CPU
Al preparar la aplicación para su lanzamiento, debe especificar qué arquitecturas de CPU de plataforma admite la aplicación. Un APK único puede contener código máquina para admitir varias arquitecturas diferentes. Cada colección de código específico de la arquitectura está asociada a una interfaz binaria de aplicación (ABI). Cada ABI define cómo se espera que este código de máquina interactúe con Android en tiempo de ejecución. Para obtener más información sobre cómo funciona, vea Multi-Core Devices Xamarin.Android.
Cómo especificar arquitecturas admitidas
Normalmente, se selecciona explícitamente una arquitectura (o arquitecturas) cuando la aplicación está configurada para Release. Cuando la aplicación está configurada para Depurar, se habilitan las opciones Usar tiempo de ejecución compartido y Usar implementación rápida, lo que deshabilita la selección de arquitectura explícita.
En Visual Studio, haga clic con el botón derecho en el proyecto en la Explorador de soluciones y seleccione Propiedades. En la página Opciones de Android, compruebe la sección Propiedades de empaquetado y compruebe que Usar tiempo de ejecución compartido está deshabilitado (si desactiva esta opción, podrá seleccionar explícitamente las API que se admitirán). Haga clic en el botón Avanzadas y, en Arquitecturas admitidas,compruebe las arquitecturas que desea admitir:
Xamarin.Android admite las siguientes arquitecturas:
- armeabi: CPU basadas en ARM que admiten al menos el conjunto de instrucciones ARMv5TE. Tenga en
armeabicuenta que no es seguro para subprocesos y no debe usarse en dispositivos con varias CPU.
Nota:
Desde Xamarin.Android 9.2, ya no se admite.
armeabi-v7a: CPU basadas en ARM con operaciones de punto flotante de hardware y varios dispositivos de CPU (SMP). Tenga en
armeabi-v7acuenta que el código del equipo no se ejecutará en dispositivos ARMv5.arm64-v8a: CPU basadas en la arquitectura ARMv8 de 64 bits.
x86: CPU que admiten el conjunto de instrucciones x86 (o IA-32). Este conjunto de instrucciones es equivalente al de pentium Pro, incluidas las instrucciones MMX, SSE, SSE2 y SSE3.
x86_64 CPU que admiten el conjunto de instrucciones x86 de 64 bits (también denominado x64y AMD64).
Xamarin.Android tiene como valor predeterminado armeabi-v7a para armeabi-v7a de versión. Esta configuración proporciona un rendimiento significativamente mejor que armeabi . Si tiene como destino una plataforma arm de 64 bits (como Nexus 9), seleccione arm64-v8a . Si va a implementar la aplicación en un dispositivo x86, seleccione x86 . Si el dispositivo x86 de destino usa una arquitectura de CPU de 64 bits, seleccione x86_64 .
Destino de varias plataformas
Para tener como destino varias arquitecturas de CPU, puede seleccionar más de una ABI (a costa de un tamaño de archivo APK mayor). Puede usar la opción Generar un paquete (.apk) por ABI seleccionada (descrita en Establecer propiedades de empaquetado)para crear un APK independiente para cada arquitectura compatible.
No es necesario seleccionar arm64-v8a ni x86_64 dispositivos de 64 bits como destino. No se requiere compatibilidad de 64 bits para ejecutar la aplicación en hardware de 64 bits. Por ejemplo, los dispositivos ARM de 64 bits (como Nexus 9)pueden ejecutar aplicaciones configuradas para . La principal ventaja de habilitar la compatibilidad de 64 bits es que la aplicación pueda abordar más memoria.
Nota:
A partir de agosto de 2018 se necesitarán nuevas aplicaciones para alcanzar el nivel 26 de la API, y a partir de agosto de 2019 se requerirá que las aplicaciones proporcionen versiones de 64 bits además de la versión de 32 bits.
Información adicional
En algunas situaciones, es posible que deba crear un APK independiente para cada arquitectura (para reducir el tamaño del APK o porque la aplicación tiene bibliotecas compartidas que son específicas de una arquitectura de CPU determinada). Para obtener más información sobre este enfoque, vea Compilar ABI-Specific API.

