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

251

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

¿Cómo haces 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.

hpique
fuente
1
todas mis aplicaciones se ejecutan más rápido en el dispositivo
16
Es divertido porque el simulador de iPhone es exactamente lo contrario. Las aplicaciones se ejecutan más lentamente en el dispositivo. En la mayoría de los casos, prefiero un emulador más lento, porque lo estimula a mejorar su aplicación, pero a veces solo quiere verlo funcionar como lo hace en un dispositivo real.
hpique
1
Es posible hacer que se ejecute MUCHO más rápido, normalmente también mediante VirtualBox; consulte stackoverflow.com/a/6058689/40961
David d C e Freitas
55
iOS y Windows Mobile usan simuladores, mientras que Android usa emuladores. Los simuladores vuelven a implementar todas las bibliotecas móviles y API utilizando bibliotecas de host, y por lo tanto son rápidas. Los emuladores usan las mismas bibliotecas que en los dispositivos reales, por lo que es más lento. En términos de Android, si usa una máquina virtual Android, será muy rápido. Proporcionamos un vm gratis aquí: leapdroid.com
huisinro
2
... y qué loco es que 6 años después, e incluso con HAXM y la imagen del sistema x86 y un entorno de desarrollo bien especificado, el emulador de Android sigue siendo lento como la melaza?
Aroth

Respuestas:

230

Página web oficial

~ 50% más rápido

Ventanas:

  • Instale "Intel x86 Emulator Accelerator (HAXM)" => SDK-Manager / Extras
  • Instale "Intel x86 Atom System Images" => SDK-Manager / Android 2.3.3
  • Vaya a la carpeta raíz del SDK de Android 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 -> Acelerador de emulador Intel x86 (instalador HAXM))

  • Cree AVD con CPU / ABI "Intel atom x86"

  • 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)

ingrese la descripción de la imagen aquí

Tampoco olvides instalar este

ingrese la descripción de la imagen aquí

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

Linux:

  • Instale KVM: abra GOOGLE, escriba "instalación de kvm"
  • Cree AVD con CPU / ABI "Intel atom x86"
  • Ejecutar desde la línea de comandos: emulador -avd avd_name -qemu -m 512 -enable-kvm
  • O ejecute desde Eclipse: Ejecutar / Ejecutar configuraciones / pestaña "Destino" -> verifique Intel x86 AVD y en la ventana "Opciones adicionales de línea de comandos del emulador" agregue: -qemu -m 512 -enable-kvm (haga clic en Ejecutar)

ingrese la descripción de la imagen aquí

PS para Fedora , para Ubuntu

OS-X:

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

PD: compruebe esta herramienta, muy conveniente incluso prueba

Gennadiy Ryabkin
fuente
8
Esto también funciona en OSX. Debe instalar /extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmgdespués de descargar el paquete desde el administrador de SDK.
Jarett Millard
55
¡Las instrucciones de Windows con "Use Host GPU" me dieron un emulador súper rápido! (Tengo un procesador Intel compatible y una tarjeta gráfica nVidia). ¡Las animaciones son muy suaves (la mayoría de las veces ; en otras ocasiones, muy poca sacudida)! Tenga en cuenta que debe reiniciar Eclipse para que AVD Manager elija la opción de CPU Intel Atom (x86) . Consejo: No asignes demasiada RAM. Con 1 GB de RAM, el emulador no pudo iniciarse (con GPU) pero con 512 MB de RAM funcionó sin problemas y se inició rápidamente (de nuevo con GPU).
ADTC
Descubrí que LogCat recibe correo no deseado con muchas advertencias de seguimiento. Para filtrarlos, úselo ^(?!.*(nativeGetEnabledTags)).*$como filtro de texto. He informado de esto como un problema de error . Además, creo que debe apagar correctamente su dispositivo emulador (mantenga presionado el botón de encendido, luego seleccione Apagar ) para evitar errores cuando lo inicie la próxima vez (podría cerrar el emulador ARM, pero con el emulador Intel, solo cerrar parece crear problemas).
ADTC
Te daría +100 si pudiera. ¡Funciona en Windows 8 y el rendimiento aumentó enormemente!
Paolo M
2
Tuve que desactivar la tecnología Hyper V primero a través del programa y las funciones en el panel de control para que esto funcione.
Mike Flynn
34

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

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

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

Luego, dele al emulador más de la CPU que tiene:

  1. Desactivar Hyperthreading : dado que el emulador no parece utilizar más de un núcleo, hyperthreading en realidad reduce la cantidad de tiempo total de CPU que obtendrá el emulador. Deshabilitar HT ralentizará las aplicaciones que aprovechan múltiples CPU. Hyperthreading debe estar deshabilitado en su BIOS.
  2. Hacer que el emulador se ejecute en una CPU que no sea la CPU 0 : esto tiene un impacto mucho menor que apagar HT, pero ayuda un poco. En Windows, puede especificar en qué CPU se ejecutará un proceso. Muchas aplicaciones masticarán la CPU 0 y, de forma 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: /superuser/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 configurar la afinidad del procesador en Windows 7:

  1. Administrador de tareas abierto
  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 cambia durante la vida útil del proceso. Siguiente inicio, tienes que hacerlo de nuevo.

ingrese la descripción de la imagen aquí

mcohen75
fuente
22
El porcentaje de CPU se duplicó cuando desactivó el hiperprocesamiento porque redujo a la mitad la cantidad de procesadores lógicos.
Timothy003
1
Funciona a la perfección pero ... ¿Sabes cómo hacerlo en Ubuntu 11.10?
emeraldhieu
1
@ Timothy003 sí, absolutamente correcto. Y duplicó la CPU que usará el emulador.
mcohen75
3
Solo verá una duplicación en el número que muestra el administrador de tareas; No en la realidad. Si no está ejecutando suficiente software para generar suficiente trabajo para tener el equivalente de al menos 4 subprocesos al 100% de CPU, las pocas aplicaciones que hacen un uso intensivo de la CPU aún obtendrán efectivamente casi todo el núcleo, no el medio núcleo que su ingenua suposición de qué significa mostrar el administrador de tareas.
Dan Is Fiddling By Firelight
3
Para confirmar lo que dice @Dan Neely: Tengo una aplicación de núcleo único, que solo quema el 100% de la CPU. Cuando tengo HT, muestra aproximadamente el 25%, sin mostrar aproximadamente el 50%, pero de hecho calcula lo que tiene que calcular al mismo tiempo. Así que no hay diferencia (al menos en Sandy Bridge).
bartosz.r
17

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

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

Emulador de Nexus 7 funcionando a 56,6 fps

Si no puede leer el texto, es un emulador de Nexus 7 que se ejecuta a 56.6 fps. La ventaja adicional (¡grande!) Es que Google Play y Google Play Services vienen empaquetados con las máquinas virtuales.

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

Paul Lammertsma
fuente
12

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 acelerar el dibujo de la pantalla. Esto da un notable aumento en la velocidad.

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

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

emulator -avd <avd_name> -gpu on

Fuente: tutorial sobre el uso del emulador de Google .

John Lehmann
fuente
10

Editar Aunque el uso de las imágenes Intel obtiene algunas mejoras de rendimiento, el rendimiento obtenido al usar 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 máquina virtual: http://developer.android.com/guide/developing/devices/emulator.html#accel-vm

ThomasW
fuente
7

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 ejecutaban Ubuntu 10.10) y el emulador funciona al menos dos veces más rápido ahora. Lanzarle más hardware ciertamente ayuda.

TripleG
fuente
Esto no es realmente una solución: puede hacer que el emulador tenga un mayor rendimiento por tiempo, pero en realidad no lo hará correr más rápido.
Más claro el
4

Me di cuenta de que el emulador por defecto es solo Core 0, donde la mayoría de las aplicaciones de Windows se convertirán en "cualquier" núcleo. Además, si lo coloca en otro núcleo (como el último núcleo), puede hacer que el emulador se vuelva loco. Si puede, intente colocar sus aplicaciones de uso intensivo de CPU en los otros núcleos de CPU para aumentar la velocidad.

En cuanto al hardware, obtenga la CPU más rápida que pueda obtener 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 usé un sistema con 2 gigas de RAM, y se desaceleró porque el sistema se quedó sin RAM y comenzó a usar el archivo de página.

Creo que las mejores CPU para él probablemente tengan un reloj alto (solo use el reloj como medida para CPU en la misma serie por cierto), manejen bien las operaciones que no sean SIMD y tengan un mecanismo de turbo boost. No hay muchos puntos de referencia basados ​​en Java, pero en general busca puntos de referencia de aplicaciones como la compresión y la oficina. No mire los juegos o los medios, ya que los SIMD los afectan enormemente. Si encuentra uno Java, aún mejor.

Joe P
fuente
4

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 byte entre ARM y x86 sino en la representación del software realizada por QEMU. Omiten la representación de QEMU y la envían directamente a un servidor X, creo. Mostraron un juego de autos con muy buen rendimiento y fps.

Me pregunto cuándo estará disponible para los desarrolladores ...

Cesar
fuente
¿Alguna noticia de este emulador? ¿Cómo se llamaba?
alcor
No tengo noticias No he seguido las actualizaciones del emulador de Android durante el último año más o menos.
Cesar
3

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í .

Koc
fuente
1

Creo que es porque la máquina virtual clr usa cpu directamente sin traducción de código de operación de código. Puede ser una optimización para la aplicación clr o puede ser Windows Mobile / Windows Phone 7 iniciado en el procesador INTEL. Plataforma de Android basada en Linux y, en teoría, puede iniciar Android en una máquina virtual en un 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 byte o lo precompila antes de la ejecución. ver: http://www.taranfx.com/how-to-run-google-android-in-virtualbox-vmware-on-netbooks

Assad
fuente
1

Gracias @zest! Trabajado como un encanto. Algunas cosas a tener en cuenta: es necesario aplicar la revisión de Intel para el HAXM para tratar el problema de pánico del kernel: http://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager También, tenga en cuenta , si tiene más de un abi, debe 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 desea el x86 abi). Aparte de los 45 minutos que me llevó resolverlos, fue un ejercicio muy gratificante en términos del mayor rendimiento del emulador.

horcle_buzz
fuente
1

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

David Dostal
fuente
1

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

Dan Alboteanu
fuente
0

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

extraño_desarrollador
fuente
0

Espero que esto ayude.

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

Resolvió mi problema ...

RajeshVijayakumar
fuente
0

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 funciona ~ 3 veces más rápido que el emulador anterior de Android, y con las mejoras de ADB ahora puede 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 servicios integrados de Google Play, por lo que puede probar más funciones de API. Finalmente, el nuevo emulador tiene nuevas características para administrar llamadas, batería, red, GPS y más.

Umer
fuente