Freigeben über


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:

  1. Wird nc zum Ausführen der Paketweiterleitung verwendet. Weitere Informationen finden Sie unter "Verwenden von nc" zum Ausführen der Paketweiterleitung.
  2. 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 adbfinden 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:

  1. Starten Sie auf Ihrem Mac den Android-Emulator.

  2. Öffnen Sie auf Ihrem Mac Terminal.

  3. Kill the adb server in Terminal:

    adb kill-server
    
  4. 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 Emulators adb lauscht auf Port 5555 und lauscht auf Konsolenverbindungen am Port 5554.

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

  6. Öffnen Sie in Ihrer Windows-VM die Eingabeaufforderung.

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

  1. Starten Sie auf Ihrem Mac den Android-Emulator.

  2. Öffnen Sie auf Ihrem Mac Terminal.

  3. Kill the adb server in Terminal:

    adb kill-server
    
  4. 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 Emulators adb lauscht auf Port 5555 und lauscht auf Konsolenverbindungen am Port 5554.

  5. Öffnen Sie in Ihrer Windows-VM die Eingabeaufforderung.

  6. 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 und 127.0.0.1 5555 der ungerade Port auf der Loopbackschnittstelle bezeichnet.

    Ersetzen Sie ihren mac-username Mac-Benutzernamen, der durch den whoami Befehl und ip-address-of-the-mac durch die IP-Adresse Ihres Mac abgerufen werden kann.

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