¿Cómo puedo ejecutar el emulador de Android junto con otra máquina virtual?

Cada vez que abro un emulador de Android cuando ya se está ejecutando un tipo diferente de VM, recibo los mensajes de error "habituales":

emulador: no se pudo sincronizar el registro vcpu
emulador: no se pudo sincronizar el contexto HAX vcpu

Aquí se recomienda no ejecutar otra VM, pero ¿qué sucede si necesito otra VM para el desarrollo o ejecutar el servidor para mi aplicación de Android en ella? ¿Hay alguna manera de ejecutar una VM invitada VirtualBox Linux y el emulador de Android al mismo tiempo? Mi sistema operativo host es OSX si eso importa.

Entonces, "otra VM" no ejecuta Android (por ejemplo, el proyecto Android-x86 que normalmente se ejecuta con VirtualBox), sino que es solo "otra VM" (por ejemplo, ejecuta Linux o Windows), como en la pregunta vinculada, por lo que es básicamente el mismo problema?
ES el mismo problema, excepto que allí querían poder ejecutar el emulador de Android, y cerrar otras máquinas virtuales era una solución suficiente, y en mi caso, dije explícitamente que necesito que ambas máquinas virtuales se ejecuten una al lado de la otra. .
No se trata específicamente del desarrollo, por lo que Stack Overflow no sería una buena opción. Superusuario probablemente lo sería, pero como admitimos el uso de emuladores aquí, creo que está bien quedarse. Incorporé algo de información en la pregunta y limpié algunos comentarios.
Si no necesita ejecutar su aplicación específicamente en el emulador, puede ejecutarla en una máquina virtual Android-x86 usando VirtualBox o una máquina virtual Genymotion (que es un envoltorio de VirtualBox) junto con su invitado de Linux.
Desafortunadamente no puedo usar Genymotion, está fallando. Quizás abra otra pregunta sobre eso.

Respuestas (4)

Sí, hay una manera de ejecutar una VM invitada VirtualBox Linux y el emulador de Android al mismo tiempo.

Tengo una configuración de trabajo que hace exactamente esto ahora, y es razonablemente simple. Para resolver el problema anterior, puede ejecutar Genymotion como su emulador de Android y Virtualbox para su máquina virtual virtual invitada de Linux.

Esto contrarresta el problema descrito en las respuestas anteriores, ya que Genymotion usa Virtualbox "debajo" como hipervisor, lo que significa que ambas máquinas virtuales (el invitado de Linux y el emulador de Android) se ejecutan en el mismo hipervisor. Esto es exactamente para lo que están destinados los hipervisores.

Además, para aclarar el significado del cartel en el enlace que proporcionó, que dice "se recomienda no ejecutar otra VM", creo que lo que quiere decir es que no puede ejecutar otros hipervisores (Docker y Virtualbox se describen allí ) en paralelo con Android Emulator, por las razones descritas por otras respuestas aquí.

Esta respuesta no ayuda sin enlaces y dirección adicional. No está nada claro cómo se supone que funciona esto o cómo empezar.

No puede ejecutar dos pilas de emulación diferentes en su procesador al mismo tiempo. Lo siento, no sucedería.

Actualización: su procesador solo puede ejecutar un sistema de emulación a la vez. Los módulos del núcleo se "reservarán" el derecho de usar las capacidades de emulación del procesador con exclusión de cualquier otro emulador que quiera usarlas. Por lo tanto, solo puede usar VMware, VirtualBox, HyperV, etc. por separado.

¿Qué es la "pila de emulación"? Puedo ejecutar varios emuladores de Android y también puedo ejecutar varias máquinas virtuales en Virtualbox. ¿Está diciendo que no hay posibilidad de que pueda ejecutar una máquina virtual en VirtualBox y un emulador de Android desde Android Studio?
Aunque eso es posiblemente cierto, ¿le importaría dar razones? Cualquier respaldo para su reclamo (con algunos antecedentes) sería bueno.
@Gavriel lo que Aeyoun probablemente significa es que, si bien puede ejecutar varias máquinas virtuales VirtualBox en paralelo, es la misma "pila" en la que se ejecutan (VirtualBox, que las administra). Pero no puede iniciar una "pila" diferente (por ejemplo, VMWare o Android Emulator) mientras ya hay una en ejecución, ya que probablemente haya algún bloqueo de recursos en su lugar. Esa es solo la idea que tengo, no tengo pruebas para esto, por lo que le pedí a Aeyoun que proporcionara algunos antecedentes;)

emulador: no se pudo sincronizar el contexto HAX vcpu

HAX significa H ardware A ccelerated e X ecution. Realmente no es posible ejecutar 2 hipervisores diferentes correctamente utilizando la aceleración de hardware: no saben lo que está haciendo el otro y ambos intentarían usar el hardware para sus propios fines. Intentar hacerlo es más o menos lo mismo que intentar ejecutar dos sistemas operativos no virtualizados al mismo tiempo, lo que claramente no puede funcionar.

Ahora, es posible que pueda ejecutar una máquina virtual puramente basada en software al mismo tiempo que un emulador de Android, pero su rendimiento se verá muy afectado (dependiendo de para qué lo esté usando). Descubrí que el emulador de Android es tan lento que no tiene valor sin la aceleración de hardware, por lo que definitivamente no desea desactivarlo.

Sin embargo, Memu parece bastante eficaz y funciona bien con VMware en mi máquina, por lo que podría ser una opción para ti. Sin embargo, no he probado ningún desarrollo con Memu; No pude hacer que ADB funcionara.

De hecho, es posible. Debe ejecutar HAXM versión 6.1.1 al menos.

Si actualiza a esta versión, funcionará.

Después de la actualización, asegúrese de que se esté ejecutando la versión correcta ejecutando:

$ANDROID_HOME/extras/intel/Hardware_Accelerated_Execution_Manager/silent_install.sh -v

Si informa una versión anterior, es posible que deba ejecutar el instalador manualmente ejecutando:

sudo $ANDROID_HOME/extras/intel/Hardware_Accelerated_Execution_Manager/silent_install.sh