Un vistazo rápido a la emulación de Android* acelerada por hardware, con el uso del Supervisor de Ejecución Acelerada por Hardware de Intel® (Intel® HAXM)

Desarrolladores de aplicaciones para Android, les preguntamos: ¿no sienten que el emulador de Android del SDK de Android es muy lento? ¿No se ven forzados a probar sus aplicaciones en dispositivos reales? ¿Qué hacen si no tienen ninguno a mano cuando lo necesitan para probar sus aplicaciones en diferentes tamaños de pantalla? ¿Y no se hartan de esperar al emulador?

¡Entonces lo que estaban esperando es Intel® HAXM!

El Supervisor de Ejecución Acelerada por Hardware de Intel® (Intel® HAXM, por su nombre en inglés Hardware Accelerated Execution Manager) es un motor de virtualización asistido por hardware (hipervisor) que usa Intel® Virtualization Technology (Intel VT) para acelerar la emulación de aplicaciones Android en máquinas host. Se ofrece como aplicación independiente.

La manera habitual en que funcionan los emuladores es la siguiente: el dispositivo físico entero que se necesita utilizar se crea en el software, es decir que la placa madre, la CPU y las demás piezas de hardware del dispositivo se representan en el software. Este procedimiento de emulación lleva mucho tiempo.

¿Y si se pudiera usar directamente el procesador en la computadora, junto con más hardware, para acelerar todo? La clave se encuentra en la eficiencia de la virtualización. Esto se trata de la creación de una envoltura que oculta las características físicas de la plataforma host al software invitado, como sería el caso de las aplicaciones en desarrollo. La envoltura es un “programa de control” que ahora se conoce con el nombre de monitor de máquina virtual o hipervisor. Por lo tanto, desde su perspectiva, el software invitado funciona de manera directa en el hardware. Esto significa que con Intel HAXM, se pueden probar aplicaciones mientras se ejecutan casi a velocidad normal, lo cual aumenta la productividad.

Sin la virtualización, para crear un dispositivo Android en el software de una PC, habría que crear una CPU basada en ARM, y otros elementos de hardware asociados, en el software. La arquitectura ARM difiere de la Arquitectura Intel (x86), y traducir cada llamada de sistema de una arquitectura a la otra puede constituir una carga enorme para el procesador físico, lo cual conduciría sin remedio a retardos. Intel HAXM se ideó específicamente con el objetivo de reducir ese retardo lo máximo posible para que la aplicación se comporte de manera más realista, lo cual ayuda a probar las aplicaciones en menos tiempo.

¿Cómo funciona Intel HAXM?

El emulador de Android se basa en una versión modificada de QEMU (abreviatura de Quick Emulator, o emulador rápido) adaptada para emular la placa de un smartphone. En el diagrama que sigue se muestra un resumen de cómo funciona la virtualización. El emulador de Android basado en QEMU que se descarga del Android SDK Manager ya es compatible con HAXM. Sin embargo, solo se puede usar HAXM si se instala el controlador de HAXM, también disponible en Android SDK Manager (en la sección Extras).

Intel HAXM Architecture

Figura 1 Arquitectura de Intel HAXM

Para que la virtualización funcione, la Tecnología de Virtualización Intel® (o Intel® VT) debe estar habilitada en el BIOS de la PC. La mayoría de los procesadores Intel que salieron a la venta después de 2005 admiten Intel VT. Podría ser conveniente consultar ark.intel.com para verificar que el procesador cumpla con los requisitos. A continuación, necesitamos usar una imagen de Android basado en x86, que se puede descargar de Android SDK Manager. Necesitamos esa imagen para evitar tener que traducir las llamadas al sistema desde una arquitectura de CPU distinta.

Virtualizar la CPU deriva en una mejora notable del rendimiento (en este vínculo se incluyen resultados de banco de pruebas). Sin embargo, los dispositivos móviles también tienen una GPU.

Por suerte, el emulador de Android basado en QEMU ofrece virtualización de GPU. QEMU es capaz de brindar compatibilidad con aceleración de gráficos; para ello, se sirve de un mecanismo de paso por OpenGL que posibilita al sistema operativo Android emulado hacer llamadas a OpenGL que se presentan directamente en el chip de gráficos del host.

Por último, para que el rendimiento sea máximo, hay que sacar provecho de la CPU física (con el uso de Intel HAXM) y la GPU física. Los detalles de configuración se encuentran en la página de aceleración por hardware oficial.

En cuanto a ayuda con la instalación de HAXM, para Windows hay que ir aquí y para Mac, aquí. Si surgen inconvenientes al instalar HAXM, sugerimos consultar nuestra guía de resolución de problemas. En caso de querer usar aceleración por hardware para emular una aplicación que usa API de Google, recomendamos leer este artículo.

Prueben Intel HAXM ¡y diviértanse!

有关编译器优化的更完整信息,请参阅优化通知