Programar para Android, una de las cosas de las que nos quejamos todos es de la lentitud del emulador en arrancar comparado con el de iOS. Es una verdad que merece una explicación.
Mientras que Android emula el teléfono completo, con su CPU, la GPU, su tarjeta SD, la memoria, etc. Está ejecutando código real que podríamos poner en un teléfono, compilado para una CPU de una arquitectura que no tenemos en el PC (p.e: ARM). En Mac, el simulador de iOS lo que hace sin embargo es crear un ejecutable (x86) que “simula” correr dentro de un teléfono cuando en realidad no es mas que un programa Mac disfrazado. Por ello, el emulador Android será siempre más fideligno a la realidad.
Pese a todo, en el día a día, los tiempos de carga son en lo que la mayoría de la gente se suele fijar fijar y en eso, iOS sigue ganando. Para evitar esto, hace poco descubrí HAXM (Hardware Accelerated Execution Manager), de Intel. Este programa (es un driver) lo que hace es instalar una capa de aceleración por encima del emulador de Android (por debajo utiliza qEmu, un emulador de CPUs). Eso sí, para que funcione, nuestra CPU ha de ser Intel y disponer además de la tecnología VT-x.
Bueno, vayamos al meollo, a lo interesante 🙂
Instalación de HAXM
Windows/Linux
Sencillo, abre el SDK Manager y al final del todo de la lista, verás el componente llamado «Intel x86 Emulator Accelerator (HAXM)«. Selecciónalo y pulsa en «Install». Cuando acabe, tendrás que irte a tu directorio del SDK de Android, dentro de la carpeta «extras», concretamente en «extras\intel\Hardware_Accelerated_Execution_Manager«. Aquí dentro esta el ejecutable, lo ejecutamos para que HAXM se instale en nuestro sistema.
Mac
Si al usar HAXM el Mac se cuelga, si, a veces también pasa en un Mac, nos vamos a la página de instalación de HAXM en HAXM Install y bajamos el .dmg. Para confirmar que se instaló bien ejecutamos lo siguiente:
$ kextstat | grep haxm
Lo que debe salir es algo así
115 0 0xffffff7f81e29000 0x13000 0x13000 com.intel.kext.intelhaxm
Uso de HAXM
Ahora nos toca bajarnos las imágenes Android que nos proporciona Intel también para usar con HAXM. La cosa es que en vez de acelerar un emulador ARM, Intel nos da Android para Intel Atom. De esta manera, cuando se ejecutan instrucciones en el Intel Atom emulado estas pasan directamente a nuestra CPU real, por eso va más rápido.
Para localizar estas imágenes busca en el SDK manager, para cada API Level del SDK, aquellos componentes llamados tal que “Intel x86 Atom System Image”. Verás que no los encuentras en todos los API levels, parece que estan en los que más son usados.
Una vez instaladas las imágenes Intel Atom, solo nos queda crearnos una AVD que las utilice. Para ello, haz como siempre solo que en «target» selecciona la opción de «Intel Atom…». Guarda y dale a «Ok».
Cuando arranques verás la diferencia :).
Y si quieres que aún vaya más rápido, puedes probar a activar también la aceleración por GPU.
Espero que cuando useis el emulador ya no se os haga tan eterno XD
Un saludo,
JavocSoft 2013