Verbinden auf einem Android-Emulator auf einem Mac von einem virtuellen Windows-Computer aus
Der Android-Emulator bietet vielseitige Netzwerkfunktionen, die für verschiedene Zwecke verwendet werden können, einschließlich der Verbindung mit einem Emulator, der auf einem Mac von einem virtuellen Windows-Computer (VM) ausgeführt wird. Dies ist nützlich, wenn Sie Windows in Parallels auf einem Mac ausführen. In diesem Szenario ist es erforderlich, den Emulator auf dem Mac zu verwenden, da er nicht in Parallels ausgeführt werden kann. Informationen zum Installieren des Android-Emulators auf einem Mac finden Sie unter "Installation".
Wichtig
Die Adresse 127.0.0.1 auf Ihrem Entwicklungscomputer entspricht der Loopbackschnittstelle des Emulators.
Es gibt zwei Standard Ansätze zum Herstellen einer Verbindung mit einem Android-Emulator auf einem Mac von einer Windows-VM aus:
- Wird
nc
zum Ausführen der Paketweiterleitung verwendet. Weitere Informationen finden Sie unter "Verwenden von nc" zum Ausführen der Paketweiterleitung. - Verwenden der
ssh
Portweiterleitung. Weitere Informationen finden Sie unter Verwenden der SSH-Portweiterleitung.
In beiden Fällen wird die Android Debug Bridge (ADB) verwendet, um eine Verbindung mit dem Emulator herzustellen. ADB ist ein Befehlszeilentool, das mit dem Android SDK Platform Tools-Paket gebündelt ist, mit dem Sie mit einem Gerät kommunizieren können. Der adb
Befehl erleichtert eine Vielzahl von Geräteaktionen, einschließlich der Verbindung mit Geräten. Weitere Informationen adb
finden Sie unter Android Debug Bridge (adb) auf developer.android.com.
Verwenden von nc zum Ausführen der Paketweiterleitung
Führen Sie die folgenden Schritte aus, um mithilfe der Paketweiterleitung eine Verbindung mit dem Android-Emulator herzustellen, der auf einem Mac von einer Windows-VM ausgeführt wird:
Starten Sie auf Ihrem Mac den Android-Emulator.
Öffnen Sie auf Ihrem Mac Terminal.
Kill the
adb
server in Terminal:adb kill-server
Identifizieren Sie in Terminal die vom Emulator verwendeten Ports:
lsof -iTCP -sTCP:LISTEN -P | grep 'emulator\|qemu' emulator6 94105 macuser 20u IPv4 0xa8dacfb1d4a1b51f 0t0 TCP localhost:5555 (LISTEN) emulator6 94105 macuser 21u IPv4 0xa8dacfb1d845a51f 0t0 TCP localhost:5554 (LISTEN)
Der Emulator verwendet ein Paar sequenzieller TCP-Ports – einen geraden Port für Konsolenverbindungen und einen ungeraden Port für
adb
Verbindungen. In der Ausgabe oberhalb des Emulatorsadb
lauscht auf Port 5555 und lauscht auf Konsolenverbindungen am Port 5554.Verwenden Sie
nc
im Terminal die Weiterleitung eingehender TCP-Pakete, die extern an Port 5555 (oder einem anderen Port) an den ungeraden Port auf der Loopbackschnittstelle empfangen wurden, und um die ausgehenden Pakete auf die andere Weise weiterzuleiten:cd /tmp mkfifo backpipe nc -kl 5555 0<backpipe | nc 127.0.0.1 5555 > backpipe
In diesem Beispiel
127.0.0.1 5555
wird der ungerade Port auf der Loopbackschnittstelle bezeichnet.Sofern der
nc
Befehl in einem Terminalfenster weiterhin ausgeführt wird, werden Pakete wie erwartet weitergeleitet. Nachdem Sie den Emulator verwendet haben, können Sie die Paketweiterleitung beendennc
, indem Sie IM Terminalfenster STRG+C drücken.Öffnen Sie in Ihrer Windows-VM die Eingabeaufforderung.
Stellen Sie an der Eingabeaufforderung eine Verbindung mit dem Emulator her:
adb connect ip-address-of-the-mac:5555
Ersetzen Sie
ip-address-of-the-mac
in diesem Beispiel durch die IP-Adresse Ihres Macs und 5555 durch den Port, den Sie aus dem vorherigen Schritt verwendet haben.Hinweis
Der Befehlszeilenzugriff
adb
kann in Visual Studio über das > Menüelement "Android > Adb Command Prompt... " abgerufen werden.
Wenn die Verbindung abgeschlossen ist, zeigt Visual Studio den Emulator als Debugziel unter Android Local Devices an, mit dem Sie Ihre App im Emulator bereitstellen können.
Verwenden der Ssh-Portweiterleitung
Sofern die Remoteanmeldung auf Ihrem Mac aktiviert ist, können Sie die Portweiterleitung verwenden ssh
, um eine Verbindung mit dem Emulator herzustellen.
Wichtig
ssh
Für die Portweiterleitung müssen Sie einen SSH-Client auf Ihrer Windows-VM installiert haben. Eine Option besteht darin, Git für Windows zu installieren. Der ssh
-Befehl steht dann an der Git Bash-Eingabeaufforderung zur Verfügung.
Wenn Sie über einen virtuellen Windows-Computer eine Verbindung mit dem Android-Emulator herstellen möchten, der auf einem Mac ausgeführt wird, führen ssh
Sie die folgenden Schritte aus, indem Sie die Portweiterleitung verwenden:
Starten Sie auf Ihrem Mac den Android-Emulator.
Öffnen Sie auf Ihrem Mac Terminal.
Kill the
adb
server in Terminal:adb kill-server
Identifizieren Sie in Terminal die vom Emulator verwendeten Ports:
lsof -iTCP -sTCP:LISTEN -P | grep 'emulator\|qemu' emulator6 94105 macuser 20u IPv4 0xa8dacfb1d4a1b51f 0t0 TCP localhost:5555 (LISTEN) emulator6 94105 macuser 21u IPv4 0xa8dacfb1d845a51f 0t0 TCP localhost:5554 (LISTEN)
Der Emulator verwendet ein Paar sequenzieller TCP-Ports – einen geraden Port für Konsolenverbindungen und einen ungeraden Port für
adb
Verbindungen. In der Ausgabe oberhalb des Emulatorsadb
lauscht auf Port 5555 und lauscht auf Konsolenverbindungen am Port 5554.Öffnen Sie in Ihrer Windows-VM die Eingabeaufforderung.
Führen Sie
ssh
an der Eingabeaufforderung die bidirektionale Portweiterleitung zwischen einem lokalen Port unter Windows und dem ungeraden Emulatorport auf der Loopbackschnittstelle des Mac aus:ssh -L localhost:15555:127.0.0.1:5555 mac-username@ip-address-of-the-mac
In diesem Beispiel
localhost:15555
wird der lokale Port unter Windows bezeichnet und127.0.0.1 5555
der ungerade Port auf der Loopbackschnittstelle bezeichnet.Ersetzen Sie ihren
mac-username
Mac-Benutzernamen, der durch denwhoami
Befehl undip-address-of-the-mac
durch die IP-Adresse Ihres Mac abgerufen werden kann.Stellen Sie an der Eingabeaufforderung mithilfe des lokalen Ports eine Verbindung mit dem Emulator her:
adb connect localhost:15555
In diesem Beispiel
localhost:15555
wird der lokale Port unter Windows bezeichnet.Hinweis
Der Befehlszeilenzugriff
adb
kann in Visual Studio über das > Menüelement "Android > Adb Command Prompt... " abgerufen werden.Achtung
Wenn Sie Port 5555 für den lokalen Port verwenden,
adb
denken Sie, dass der Emulator lokal unter Windows ausgeführt wird. Dies verursacht keine Probleme in Visual Studio, aber in Visual Studio für Mac wird die App unmittelbar nach dem Start beendet.
Wenn die Verbindung abgeschlossen ist, zeigt Visual Studio den Emulator als Debugziel unter Android Local Devices an, mit dem Sie Ihre App im Emulator bereitstellen können.