Wenn Sie Anwendungen testen möchten, die Interaktionen zwischen mehreren Geräten umfassen, können Sie mehrere Android Emulator-Instanzen verbinden, damit sie miteinander kommunizieren können. Die Methode zum Herstellen einer Verbindung hängt von der verwendeten Emulatorversion ab.
Android-Emulatoren ab Version 36.5
Ab Android Emulator Version 36.5 ist ein vereinfachtes Netzwerkmodell verfügbar, das Instanzen über ein gemeinsames WLAN verbindet.
Mit diesem Netzwerk-Stack werden mehrere Emulatoren als separate Geräte im selben virtuellen WLAN angezeigt. Dadurch können sie sich automatisch über standardmäßige WLAN-basierte Protokolle erkennen und miteinander kommunizieren.
Emulatoren können sich im virtuellen Netzwerk mithilfe von Technologien wie Network Service Discovery (NSD) und Wi‑Fi Direct finden.
Da sich die Emulatoren im selben WLAN befinden, können Sie auch die spezifische IP-Adresse eines Emulators ermitteln und direkt von einer anderen Emulatorinstanz aus eine Verbindung zu ihm herstellen. Führen Sie auf Ihrem Hostcomputer den folgenden Befehl aus, um die IP-Adresse der virtuellen WLAN-Schnittstelle (wlan0) abzurufen:
adb shell ip addr show wlan0
Android Emulator vor Version 36.5
Wenn Sie eine ältere Version des Android-Emulators verwenden, ist die direkte Kommunikation zwischen Instanzen standardmäßig nicht möglich. Jede Emulatorinstanz wird hinter einem eigenen virtuellen Router ausgeführt, wodurch sie vom lokalen Netzwerk und anderen Emulatoren isoliert wird.
Damit die Kommunikation möglich ist, müssen Sie die Netzwerkumleitung manuell einrichten. Dazu müssen Sie eine Zuordnung erstellen, die Traffic von einem bestimmten Port auf Ihrem Hostcomputer an einen Port auf dem emulierten Gerät weiterleitet und dabei den virtuellen Router umgeht.
Sie haben zwei Möglichkeiten, die Netzwerkumleitung zu konfigurieren:
- Emulator-Konsolenbefehle: Verwenden Sie die integrierte Konsole, um Portzuordnungen für die ausgeführte Emulatorinstanz einzurichten.
- Android Debug Bridge (adb): Verwenden Sie adb-Befehle, um die erforderlichen Portweiterleitungsregeln zu konfigurieren.
Umleitung über die Emulatorkonsole einrichten
Jede Emulatorinstanz bietet eine Steuerkonsole, mit der Sie eine Verbindung herstellen und Befehle ausgeben können, die für diese Instanz spezifisch sind. Verwenden Sie den redir-Konsolenbefehl, um die Weiterleitung nach Bedarf für eine Emulatorinstanz einzurichten.
Ermitteln Sie zuerst die Konsolenportnummer für die Ziel-Emulatorinstanz. Die Konsolenportnummer für die erste gestartete Emulatorinstanz ist beispielsweise 5554. Stellen Sie als Nächstes eine Verbindung zur Konsole der Ziel-Emulatorinstanz her und geben Sie die zugehörige Konsolenportnummer an:
telnet localhost 5554
Sobald die Verbindung hergestellt ist, müssen Sie sich authentifizieren, bevor Sie die Weiterleitung einrichten können. Weitere Informationen dazu finden Sie unter Konsolensitzung starten und beenden. Nach der Authentifizierung können Sie den Befehl redir verwenden, um mit der Weiterleitung zu arbeiten.
Verwenden Sie den folgenden Befehl, um eine Weiterleitung hinzuzufügen:
redir add <protocol>:<host-port>:<guest-port>
Dabei ist <protocol> entweder tcp oder udp. Mit <host-port> und <guest-
port> wird die Zuordnung zwischen Ihrem Computer und dem emulierten System festgelegt.
Mit dem folgenden Befehl wird beispielsweise eine Weiterleitung eingerichtet, die alle eingehenden TCP-Verbindungen zu Ihrem Hostcomputer (Entwicklung) auf 127.0.0.1:5000 verarbeitet und an das emulierte System auf 10.0.2.15:6000 weiterleitet:
redir add tcp:5000:6000
Verwenden Sie den Befehl redir del, um eine Weiterleitung zu löschen. Verwenden Sie redir list, um alle Weiterleitungen für eine bestimmte Instanz aufzulisten. Weitere Informationen zu diesen und anderen Konsolenbefehlen finden Sie unter Konsolenbefehle für Emulator senden.
Die Portnummern sind durch Ihre lokale Umgebung eingeschränkt. Das bedeutet in der Regel, dass Sie Hostportnummern unter 1024 nur mit speziellen Administratorberechtigungen verwenden können. Außerdem können Sie keine Weiterleitung für einen Hostport einrichten, der bereits von einem anderen Prozess auf Ihrem Computer verwendet wird. In diesem Fall wird in redir eine entsprechende Fehlermeldung generiert.
Weiterleitung über adb einrichten
Das Tool Android Debug Bridge (adb) bietet Portweiterleitung als alternative Möglichkeit zum Einrichten der Netzwerkumleitung. Weitere Informationen finden Sie in der adb-Dokumentation unter Portweiterleitung einrichten.
Derzeit gibt es in adb keine Möglichkeit, eine Weiterleitung zu entfernen, außer durch das Beenden des adb-Servers.
Emulator-Instanzen verbinden
Damit eine Emulatorinstanz mit einer anderen kommunizieren kann, richten Sie die Netzwerkumleitung wie in den folgenden Schritten beschrieben ein.
Angenommen, Ihre Umgebung sieht so aus:
- A ist Ihr Entwicklungscomputer.
- B ist Ihre erste Emulatorinstanz, die auf A ausgeführt wird.
- C ist Ihre zweite Emulatorinstanz, die ebenfalls auf A ausgeführt wird.
Wenn Sie einen Server auf B ausführen möchten, mit dem C eine Verbindung herstellt, richten Sie ihn so ein:
- Richten Sie den Server auf B ein und lassen Sie ihn auf
10.0.2.15:<serverPort>warten. - Richten Sie auf der B-Konsole eine Weiterleitung von A:
localhost:<localPort>zu B:10.0.2.15:<serverPort>ein. - Stellen Sie auf C eine Verbindung des Clients zu
10.0.2.2:<localPort>her.
Wenn Sie beispielsweise einen HTTP-Server ausführen möchten, wählen Sie <serverPort> als 80 und <localPort> als 8080 aus:
- B hört auf
10.0.2.15:80. - Geben Sie auf der B-Konsole
redir add tcp:8080:80ein. - C stellt eine Verbindung zu
10.0.2.2:8080her.