Wie kann ich den Android-Emulator zusammen mit einer anderen VM ausführen?

7

Immer wenn ich einen Android-Emulator öffne, wenn bereits eine andere Art von VM ausgeführt wird, erhalte ich die "üblichen" Fehlermeldungen:

Emulator: Fehler beim Synchronisieren des VCPU-Reg-
Emulators: Fehler beim Synchronisieren des HAX-VCPU-Kontexts

Hier wird empfohlen, keine andere VM auszuführen, aber was ist, wenn ich eine andere VM für die Entwicklung benötige oder den Server für meine Android-App darauf ausführen möchte? Gibt es eine Möglichkeit, eine VirtualBox Linux-Gast-VM und den Android-Emulator gleichzeitig auszuführen? Mein Host-Betriebssystem ist OSX, wenn das wichtig ist.

Gavriel
quelle
Auf "einer anderen VM" wird also nicht Android ausgeführt (z. B. das Android-x86-Projekt, das normalerweise mit VirtualBox ausgeführt wird), sondern nur "eine andere VM" (z. B. Linux oder Windows), wie in der verknüpften Frage das gleiche Problem?
Izzy
1
Es ist das gleiche Problem, außer dass sie dort den Android-Emulator ausführen wollten und das Schließen anderer VMs eine ausreichende Lösung waren. In meinem Fall habe ich ausdrücklich angegeben, dass beide VMs nebeneinander ausgeführt werden müssen .
Gavriel
Hier geht es nicht speziell um die Entwicklung, daher wäre ein Stapelüberlauf keine gute Lösung. Super User wäre wahrscheinlich, aber da wir hier die Verwendung von Emulatoren unterstützen, denke ich, dass es in Ordnung ist, zu bleiben. Ich habe einige Informationen in die Frage aufgenommen und einige Kommentare aufgeräumt.
Matthew Read
Wenn Sie Ihre App nicht speziell im Emulator ausführen müssen, können Sie sie in einer Android-x86-VM mit VirtualBox oder einer Genymotion-VM (einem Wrapper von VirtualBox) zusammen mit Ihrem Linux-Gast ausführen.
Paul Ratazzi
Leider kann ich Genymotion nicht verwenden, es schlägt fehl. Vielleicht werde ich noch eine Frage dazu stellen.
Gavriel

Antworten:

1

Ja, es gibt eine Möglichkeit, eine VirtualBox Linux-Gast-VM und den Android-Emulator gleichzeitig auszuführen.

Ich habe ein funktionierendes Setup, das genau dies jetzt tut, und es ist ziemlich einfach. Um das oben genannte Problem zu lösen, können Sie Genymotion als Android-Emulator und Virtualbox für Ihre virtuelle Linux-Gast-VM ausführen.

Dies wirkt dem in den obigen Antworten beschriebenen Problem entgegen, da Genymotion Virtualbox "unter" als Hypervisor verwendet, was bedeutet, dass beide virtuellen Maschinen (der Linux-Gast und der Android-Emulator) auf demselben Hypervisor ausgeführt werden. Genau dafür sind Hypervisoren gedacht.

Um die Bedeutung des Posters in dem von Ihnen angegebenen Link zu verdeutlichen, der angibt, "es wird empfohlen, keine andere VM auszuführen", meint er damit, dass Sie nicht auch andere Hypervisoren ausführen können (Docker und Virtualbox werden dort beschrieben) ) parallel zum Android Emulator aus den Gründen, die in anderen Antworten hier beschrieben sind.

Pharao-Werkzeuge
quelle
Diese Antwort hilft nicht ohne Links und zusätzliche Anweisungen. Es ist überhaupt nicht klar, wie das funktionieren soll oder wie man überhaupt anfängt.
Anthony
2

Sie können nicht zwei verschiedene Emulationsstapel gleichzeitig auf Ihrem Prozessor ausführen. Entschuldigung, das würde nicht passieren.

Update: Ihr Prozessor kann jeweils nur ein Emulationssystem ausführen. Kernelmodule behalten sich das Recht vor, die Emulationsfunktionen des Prozessors unter Ausschluss aller anderen Emulatoren zu verwenden, die sie verwenden möchten. Sie können VMware, VirtualBox, HyperV usw. also nur separat verwenden.

Aeyoun
quelle
Was ist "Emulationsstapel"? Ich kann mehrere Andorid-Emulatoren ausführen, und ich kann auch mehrere VMs in Virtualbox ausführen. Sie sagen, es gibt keine Chance, dass ich eine VM in VirtualBox und einen Android-Emulator in Android Studio ausführen kann?
Gavriel
3
Obwohl das möglicherweise wahr ist, möchten Sie Gründe angeben? Jede Unterstützung für Ihren Anspruch (mit etwas Hintergrund) wäre nett.
Izzy
2
@Gavriel Aeyoun bedeutet höchstwahrscheinlich, dass Sie zwar mehrere VirtualBox-VMs gleichzeitig ausführen können, es sich jedoch um denselben "Stapel" handelt, auf dem sie ausgeführt werden (VirtualBox, die sie verwaltet). Sie können jedoch keinen anderen "Stack" (z. B. VMWare oder Android Emulator) starten, während bereits einer ausgeführt wird, da wahrscheinlich einige Ressourcen gesperrt sind. Das ist nur die Idee, die ich bekomme, ich habe keinen Beweis dafür - weshalb ich Aeyoun gebeten habe, Hintergrundinformationen zu liefern;)
Izzy
0

Emulator: Fehler beim Synchronisieren des HAX-VCPU-Kontexts

HAX steht für H ardware A ccelerated e X ecution. Es ist nicht wirklich möglich, zwei verschiedene Hypervisoren mit Hardwarebeschleunigung korrekt auszuführen - sie wissen nicht, was der andere tut, und beide würden versuchen, die Hardware für ihre eigenen Zwecke zu verwenden. Der Versuch, dies zu tun, ist mehr oder weniger der gleiche wie der Versuch, zwei nicht virtualisierte Betriebssysteme gleichzeitig auszuführen, was eindeutig nicht funktionieren kann.

Jetzt können Sie möglicherweise eine rein softwarebasierte virtuelle Maschine gleichzeitig mit einem Android-Emulator ausführen. Die Leistung wird jedoch erheblich beeinträchtigt (je nachdem, wofür Sie sie verwenden). Ich habe festgestellt, dass der Android-Emulator so langsam ist, dass er ohne Hardwarebeschleunigung wertlos ist. Sie möchten ihn also definitiv nicht deaktivieren.

Allerdings Memu scheint ziemlich performant und spielt schön mit VMware auf meinem Rechner, so dass könnte eine Option für Sie sein. Ich habe jedoch keine Entwicklung mit Memu versucht; Ich konnte ADB nicht zum Arbeiten bringen.

Matthew Read
quelle
-1

Es ist in der Tat möglich. Sie müssen mindestens HAXM Version 6.1.1 ausführen.

Wenn Sie auf diese Version aktualisieren, funktioniert es.

Stellen Sie nach dem Upgrade sicher, dass die richtige Version ausgeführt wird, indem Sie Folgendes ausführen:

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

Wenn eine ältere Version gemeldet wird, müssen Sie das Installationsprogramm möglicherweise manuell ausführen, indem Sie Folgendes ausführen:

sudo $ANDROID_HOME/extras/intel/Hardware_Accelerated_Execution_Manager/silent_install.sh
Großmutter
quelle