Hacer que el emulador de Android funcione más rápido

El emulador de Android es un poco lento. Para algunos dispositivos, como el Motorola Droid y el Nexus One, la aplicación funciona más rápido en el dispositivo real que en el emulador. Este es un problema cuando se prueban juegos y efectos visuales.

¿Cómo haces para que el emulador funcione lo más rápido posible? He estado jugando con sus parámetros pero aún no he encontrado una configuración que muestre una mejora notable.

Página web oficial

~ 50% más rápido

Windows:

  • Instale “Intel x86 Emulator Accelerator (HAXM)” => SDK-Manager / Extras
  • Instalar “Imágenes del sistema Intel x86 Atom” => SDK-Manager / Android 2.3.3
  • Vaya a la carpeta raíz de Android SDK y vaya a extras \ intel \ Hardware_Accelerated_Execution_Manager. Ejecute el archivo IntelHaxm.exe para instalar. (en Android Studio puede navegar a: Configuración -> SDK de Android -> Herramientas de SDK -> Intel x86 Emulator Accelerator (instalador HAXM))

  • Crear AVD con “Intel atom x86” CPU / ABI

  • Ejecute el emulador y compruebe en la consola que HAXM se está ejecutando (abra una ventana del símbolo del sistema y ejecute el comando: sc query intelhaxm)

enter image description here

Además, no olvide instalar este

enter image description here

PD durante la creación de AVD agregue memoria de emulación: Hardware / Nuevo / Tamaño de ram de dispositivo / valor de configuración 512 o más

Linux:

  • Instalar KVM: abra GOOGLE, escriba “instalación kvm”
  • Crear AVD con “Intel atom x86” CPU / ABI
  • Ejecutar desde la línea de comandos: emulator -avd avd_name -qemu -m 512 -enable-kvm
  • O ejecute desde Eclipse: Ejecutar / Ejecutar Configuraciones / Tab “Objetivo” -> comprobar Intel x86 AVD y en la ventana “Opciones adicionales de línea de comandos del emulador” agregar: -qemu -m 512 -enable-kvm (haga clic en Ejecutar)

enter image description here

PS para Fedora , para Ubuntu

OS-X:

  • En Android SDK Manager, instale la imagen del sistema Intel x86 Atom
  • En Android SDK Manager, instale Intel x86 Emulator Accelerator (HAXM)
  • En el buscador, vaya a la ubicación de instalación del Intel Emulator Accelerator e instale IntelHAXM (abra dmg y ejecute la instalación). Puede encontrar la ubicación colocando el mouse sobre la entrada Acelerador del emulador en el administrador del SDK.
  • Cree o actualice un AVD y especifique Intel Atom x86 como CPU. Intel x86 Emulator Accelerator (HAXM) que muestra la ubicación

PD: compruebe esta herramienta, muy conveniente, incluso de prueba

ACTUALIZACIÓN: ahora que está disponible una imagen Intel x86, la mejor respuesta es por entusiasmo.

Como CommonsWare ha señalado correctamente, el emulador es lento porque emula una CPU ARM, que requiere traducción a los códigos de operación de Intel. Esta virtualización mastica la CPU.

Para que el emulador sea más rápido, debes darle más CPU. Comience con una CPU rápida o actualice si puede.

Luego, dale al emulador más CPU que tienes:

  1. Deshabilitar Hyperthreading : dado que el emulador no parece utilizar más de un núcleo, el hyperthreading realmente reduce la cantidad total de tiempo de CPU que obtendrá el emulador. La desactivación de HT ralentizará las aplicaciones que aprovechan las múltiples CPU. Hyperthreading debe estar deshabilitado en su BIOS.
  2. Haga que el emulador se ejecute en una CPU que no sea CPU 0 – Esto tiene un impacto mucho menor que apagar la HT, pero ayuda a algunos. En Windows, puede especificar en qué CPU se ejecutará un proceso. Muchas aplicaciones masticarán la CPU 0, y de manera predeterminada el emulador se ejecuta en la CPU 0. Cambio el emulador para que se ejecute en la última. Tenga en cuenta que en OS X no puede establecer afinidad (consulte: https://superuser.com/questions/149312/how-to-set-processor-affinity-on-a-mac ).

Estoy viendo en algún lugar una mejora del 50% con estos dos cambios en su lugar.

Para establecer la afinidad del procesador en Windows 7:

  1. Abrir el Administrador de tareas
  2. Haga clic en Ver todos los procesos (para ejecutar como administrador, de lo contrario no puede establecer la afinidad del procesador)
  3. Haga clic derecho en emulator.exe y elija Establecer afinidad …
  4. En el cuadro de diálogo Establecer afinidad, seleccione solo la última CPU

Nota: Cuando cambia la afinidad de esta manera, solo se cambia durante el tiempo de vida del proceso. El siguiente comienzo, tienes que hacerlo de nuevo.

enter image description here

Me gustaría sugerir darle un giro a Genymotion . Se ejecuta en VirtualBox de Oracle, y llegará legítimamente a 60 fps en un sistema moderado.

Aquí hay una tapa de pantalla de uno de mis talleres, que se ejecuta en un modelo de gama baja de 2012 MacBook Air:

El emulador Nexus 7 funciona a 56.6 fps

Si no puedes leer el texto, es un emulador Nexus 7 que funciona a 56.6 fps. El bono adicional (¡grande!) Es que Google Play y Google Play Services vienen empaquetados con las máquinas virtuales.

(La fuente de la animación de demostración se puede encontrar aquí ).

Habilite la aceleración de hardware de GPU (además de HAXM de Intel), si está utilizando API 15 v3 o posterior y SDK Tools v17 +. La aceleración de gráficos para el emulador aprovecha el hardware de gráficos de su computadora de desarrollo, específicamente su unidad de procesamiento de gráficos (GPU), para que el dibujo de la pantalla sea más rápido. Esto le da un impulso notable en la velocidad.

Para habilitar la aceleración de gráficos habilitada de manera predeterminada en su emulador : al crear el AVD, en la sección Hardware, haga clic en Nuevo, seleccione emulación GPU y establezca el valor en Sí.

Para habilitar la aceleración solo en el tiempo de ejecución : use el indicador -gpu mientras inicia el emulador de esta manera:

 emulator -avd  -gpu on 

Fuente: tutorial de Uso del Emulador de Google .

Editar Aunque el uso de las imágenes de Intel obtiene algunos aumentos de rendimiento, el rendimiento obtenido mediante el uso de Genymotion es mucho mayor. Ver la respuesta de Paul Lammertsma .

Respuesta anterior

Con ADT rev 17, el emulador admite la ejecución de imágenes del sistema x86 en modo de virtualización en Windows y Mac OS X. Esto tiene un impacto notable en el rendimiento.

ADT rev 17 notas: http://android-developers.blogspot.jp/2012/03/updated-sdk-tools-and-adt-revision-17.html

Configuración de la aceleración de la máquina virtual: http://developer.android.com/guide/developing/devices/emulator.html#accel-vm

Recientemente cambié de un núcleo 2 @ 2.5 con 3 gb de ram a un i7 @ 1.73 con 8 gb ram (ambos sistemas ejecutaron Ubuntu 10.10) y el emulador funciona al menos dos veces más rápido ahora. Lanzar más hardware en él ciertamente ayuda.

Solo quería decir que después de instalar el acelerador Intel HAXM y usar la imagen Intel Atom, el emulador parece funcionar 50 veces más rápido. La diferencia es increíble, ¡compruébalo!

http://www.developer.com/ws/android/development-tools/haxm-speeds-up-the-android-emulator.html

Me di cuenta de que el emulador está predeterminado solo en Core 0, donde la mayoría de las aplicaciones de Windows tendrán como valor predeterminado “any” core. Además, si lo pones en otro núcleo (como el último núcleo), puede hacer que el emulador se vuelva loco. Si puede, puede intentar colocar sus aplicaciones de uso de CPU pesadas en los otros núcleos de la CPU para boost la velocidad.

En lo que respecta a hardware, obtenga la CPU más rápida que pueda obtener y que funcione para aplicaciones de un solo núcleo. Es posible que más de 2 núcleos no experimenten una gran diferencia en términos de rendimiento del emulador.

Eclipse + el emulador de Android juntos consumen una tonelada de RAM. Recomendaría 3 gigas de RAM al menos porque utilicé un sistema con 2 gigas de RAM, y se ralentizó porque el sistema se quedó sin RAM y comenzó a usar el archivo de página.

Creo que las mejores CPUs probablemente tengan un reloj alto (solo use el reloj como medida para las CPU en la misma serie por cierto), manejen bien las operaciones que no son SIMD y tengan un mecanismo de turboalimentador. No hay muchos puntos de referencia basados ​​en Java, pero en general busca puntos de referencia de aplicaciones como compresión y oficina. No mire los juegos o los medios, ya que SIMD los afecta en gran medida. Si encuentras uno de Java, incluso mejor.

En este año, Google I / O (2011), Google demostró un emulador más rápido. El problema no está tanto en el código de bytes entre ARM y x86, sino también en la representación del software realizada por QEMU. Evitan la representación de QEMU y envían el renderizado directamente a un servidor X, creo. Mostraron un juego de coches con muy buena performacia y fps.

Me pregunto cuándo estará disponible para desarrolladores …

Google anunció recientemente un nuevo emulador para Android. Es mucho más rápido y mejor que el anterior. Puede encontrar más información al respecto aquí .

Creo que es porque la máquina virtual clr usa la CPU directamente sin código de traducción del código de operación. Puede ser una optimización para la aplicación clr o puede ser que Windows 7 se inicie en el proccessor INTEL. Plataforma Android basada en Linux y teóricamente puede iniciar Android en la máquina virtual en el entorno i686. En este caso, las máquinas virtuales como vmware podrían ejecutar algunos códigos de operación directamente. Pero esta opción solo se permitirá si escribe en Java. Porque Java interpreta su código de bytes o lo precomstack antes de la ejecución. ver: http://www.taranfx.com/how-to-run-google-android-in-virtualbox-vmware-on-netbooks

¡Gracias @zest! Trabajado como un encanto. Algunas cosas a tener en cuenta: Necesidad de aplicar la revisión de Intel para HAXM para tratar el problema de kernel panic: http://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager . , si tiene más de un abi, necesita desinstalar uno debido a un error en la última versión de la API de Android (r19): https://code.google.com/p/android/issues/detail?id= 66740 (elimine armeabi-v7a en este caso, ya que quiere el x86 abi). Aparte de los 45 minutos que tardé en resolverlos, fue un ejercicio muy gratificante en términos del rendimiento incrementado del emulador.

Oh, el manicomio … el dirigido por los locos … ay de mí …

Hay una respuesta bastante completa en mi blog en http://tenacious33.wordpress.com/2012/04/05/improving-android-emulator-performance/

Me dirigiré al “modo acelerado” r17 en mi publicación del blog en una semana o dos. La lista de advertencias asociadas no inspira confianza ni orgullo.

He estado usando Intel (86) CPU / ABI. Creé otro emulador usando el ARM (armeabi-v7a) y encontré una gran mejora con la velocidad. Estoy usando la plataforma 4.1.2 API nivel 16

Una alternativa al emulador es la máquina virtual AndroVM, que funciona mucho más rápido que el emulador y admite la aceleración de OpenGL:

http://androvm.org/

Anecdóticamente, creo que funciona más rápido que los dispositivos Android reales.

Espero que esto ayude.

Goto to your BIOS settings. Enable your Virtualization technology in your settings..

Solucionó mi problema …

Actualice su Android Studio actual a Android Studio 2.0 y también actualice las imágenes del sistema.

El emulador de Android Studio 2.0 se ejecuta ~ 3 veces más rápido que el emulador anterior de Android, y con las mejoras de ADB ahora puedes enviar aplicaciones y datos 10 veces más rápido al emulador que a un dispositivo físico. Al igual que un dispositivo físico, el emulador oficial de Android también incluye los servicios de Google Play integrados, por lo que puede probar más funciones de la API. Finalmente, el nuevo emulador tiene nuevas funciones para administrar llamadas, baterías, redes, GPS y más.

También puedes probar el Emulador de Visual Studio para Android , que también se puede instalar como un emulador independiente (no necesitas Visual Studio). Tenga en cuenta que solo se puede instalar en Windows Pro o sistemas superiores.

Usa Genymotion en lugar de emulador. Genymotion tiene un mejor rendimiento https://www.genymotion.com

elige un emulador de baja resolución (p. ej .: Nexus S) si no tienes una buena tarjeta gráfica (como yo)