Cómo acelerar el emulador de Android

Cuando desarrollamos aplicaciones para móviles o tablets y no tenemos acceso a un dispositivo físico, o queremos probar nuestra aplicación en distintos tamaños de pantalla o densidades tenemos dos alternativas principales: los “simuladores”, como el que incluye el SDK de iOS, y los emuladores, como el del SDK de Android.

Emuladores vs simuladores

Un simulador sólo simula el entorno software en que se ejecutará la aplicación. Cuando ejecutamos una aplicación en el simulador de iOS, lo que ocurre realmente es que la aplicación se compila a código máquina nativo y se simulan las llamadas de sistema de iOS. Como la aplicación se ejecuta de manera nativa, es extremadamente rápida, pero a cambio, el resultado es menos fidedigno.

Por otro lado el emulador de Android, que básicamente es una versión modificada de QEMU con un frontend, emula todo el entorno software y hardware de un tablet o teléfono Android, a excepción de que no puede hacer llamadas. Esto permite hacernos una idea mucho más certera de cómo se comportará nuestra aplicación en un dispositivo real, pero a cambio, también es mucho más lento, sobre todo si activamos las funciones de depuración. Tanto es así que, gracias a lo sencillo y conveniente que es un utilizar un dispositivo físico para probar nuestro código en Android, muchos desarrolladores terminan desechando el emulador totalmente y utilizando teléfonos y tablets reales exclusivamente.

Acelerar el emulador de Android

Aunque es una información que se recoge en el sitio web de Android para desarrolladores y numerosas páginas se hacen eco, mucha gente no es consciente de que es posible utilizar imágenes de Android basadas en x86 y hacer uso de la GPU de nuestra máquina y las funciones de virtualización de las CPUs más modernas para mejorar dramáticamente el rendimiento del emulador de Android.

Como ejemplo de cómo pueden afectar estas opciones al rendimiento del emulador, sin ningún tipo de valor estadístico y sólo como curiosidad, aquí tenéis los tiempos obtenidos en el test SunSpider activando cada una de estas opciones de forma consecutiva:

Rendimiento del emulador de Android usando una imagen x86, VT-x y la GPU

Las imágenes de Android para x86 están disponibles a través del SDK Manager. Sólo es necesario desplegar la rama correspondiente a la versión de Android que estemos utilizando e instalar el paquete “Intel x86 Atom System Image”. Una vez instalado el paquete tendremos la opción de utilizar “Intel Atom (x86)” como CPU/ABI al crear un nuevo AVD.

Instalando la imagen x86 de Android

Seleccionando Intel x86 como CPU/ABI

Si disponemos de un procesador Intel con la tecnología VT-x podemos mejorar aún más el rendimiento utilizando virtualización basada en el propio hardware. Sólo tenemos que descargar el paquete “Intel x86 Emulator Accelerator (HAXM)” mediante el SDK Manager y ejecutar el instalador que encontraremos en \sdk\extras\intel\Hardware_Accelerated_Execution_Manager\IntelHaxm.exe una vez terminada la descarga.

Por último, para activar la aceleración mediante la GPU sólo tenemos que activar la opción “Use Host GPU” al crear un nuevo AVD.

Otras opciones que pueden ayudarnos a mejorar el rendimiento del emulador son utilizar versiones más antiguas de Android, usar resoluciones más bajas o aumentar la RAM que se le da al AVD, si contamos con memoria suficiente.

Comentarios
  1. Diego

    Muchas gracias por esta entrada, ha sido un tremendo alivio ver que es posible emular las apps en el ordenador sin tener que armarse de paciencia. El aumento de rendimiento es espectacular 🙂

    Responder

  2. errepunto

    Quizás el principal inconveniente pueda ser precisamente que las aplicaciones funcionen “demasiado bien” y luego al llevarlas al dispositivo nos llevemos un pequeño chasco, jeje.

    Responder

    • Bueno, yo para cosas de rendimiento sí que prefiero probar con algún dispositivo físico. Algún móvil humilde, de gama baja.

      Responder

  3. [UT]_Roxx

    Buen artículo Zootropo. Yo también soy de los que, si es posible, prefiero con mucha diferencia probar sobre el dispositivo físico. Aunque tengas que tener más cables, cargadores y cosas sobre la mesa.

    Responder

  4. bass

    Lástima que no funcione con Linux…

    Responder

  5. Christian

    Muchas gracias por tu ayuda!, la estaba necesitando

    Responder

  6. Richars

    Y como se instala un galaxy s3 como emulador fisico?

    Responder

  7. Anonimo

    Ya tengo el instalador de IntelHaxm. Pero no lo puedo instalar, porque me sale:

    Este equipo es compatible con la tecnología de virtualización de Intel (VT-x) Haxm no se puede instalar. Por favor, consulte la documentación de Intel Haxm para más información.

    ¿Como puedo solucionar este problema?

    Responder

  8. jhon

    Tengo un sg gt s5830m. Quiero que mis juegos se vean mas rapidos con emula64.que debo hacer

    Responder

  9. Androyder

    Muchas gracias eres muy bueno Zootropo solo entre para dar gracias Xiao n_n

    Responder

  10. papichi

    A mí, no me deja seleccionar otro elemento en CPU/ABI.. :l

    Responder

    • anonimo

      Las imágenes de Android para x86 están disponibles a través del SDK Manager. Sólo es necesario desplegar la rama correspondiente a la versión de Android que estemos utilizando e instalar el paquete “Intel x86 Atom System Image”.

      Responder

  11. Benjamin

    Hola tengo una duda como hacer que bluestacks reconosca mi microfono de mi laptop y la camara ya que por ejemplo descargue retrica y bueno si abre pero en la parte donde debo aparecer osea donde me debo ver se ve en negro que hago ..? y asi es con cualquier cosa que tenga que ver con camara

    Responder

Deja un comentario