Android Emulator-Netzwerk einrichten

Der Emulator bietet vielseitige Netzwerkfunktionen, mit denen Sie komplexe Modellierungs- und Testumgebungen für Ihre App einzurichten. Diese Seite stellt die Netzwerkarchitektur und -funktionen des Emulators vor.

Netzwerkadressraum

Jede Instanz des Emulators wird hinter einem virtuellen Router oder Firewalldienst ausgeführt die ihn von den Netzwerkschnittstellen und Einstellungen Ihrer Entwicklungsmaschine isoliert. und aus dem Internet. Ein emuliertes Gerät kann Ihre Entwicklungsmaschine nicht erkennen oder andere Emulatorinstanzen im Netzwerk. Es erkennt nur, dass es die per Ethernet mit einem Router oder einer Firewall verbunden sind.

Der virtuelle Router für jede Instanz verwaltet die 10.0.2/24-Netzwerkadresse Leerzeichen. Alle vom Router verwalteten Adressen haben die Form 10.0.2.xx, wobei xx eine Zahl ist Adressen in diesem Gruppenbereich: vom Emulator oder Router vorab zugewiesen:

Netzwerkadresse Beschreibung
10.0.2.1 Router- oder Gateway-Adresse
10.0.2.2 Spezieller Alias für die Loopback-Schnittstelle Ihres Hosts (127.0.0.1 auf Ihrem Entwicklungsmaschine)
10.0.2.3 Erster DNS-Server
10.0.2.4 / 10.0.2.5 / 10.0.2.6 Optionaler zweiter, dritter und vierter DNS-Server
0.0.2.10 Das emulierte Gerätenetzwerk bei Verbindung über Ethernet
10.0.2.16 Das emulierte Gerätenetzwerk, wenn eine WLAN-Verbindung besteht
127.0.0.1 Die emulierte Loopback-Schnittstelle des Geräts

Für alle laufenden Emulatoren werden dieselben Adresszuweisungen verwendet Instanzen. Wenn also zwei Instanzen gleichzeitig auf einem Gerät hat jeweils einen eigenen Router und dahinter ein IP-Adresse von 10.0.2.15. Die Instanzen sind durch einen Router isoliert und sich im selben Netzwerk erkennen. Informationen zur für die Kommunikation von Emulatorinstanzen über TCP/UDP, lesen Sie den Abschnitt zum Verbinden von Emulatorinstanzen.

Die Adresse 127.0.0.1 auf Ihrem Entwicklungscomputer entspricht zur Loopback-Oberfläche des Emulators. So greifen Sie auf ausgeführte Dienste zu: in der Loopback-Oberfläche Ihres Entwicklungscomputers verwenden, Adresse 10.0.2.2.

Die vorab zugewiesenen Adressen eines emulierten Geräts sind spezifisch für den Android-Emulator sind und in der Praxis Geräte, bei denen es sich wahrscheinlich auch um eine Netzwerkadressübersetzung handelt, hinter einem Router oder einer Firewall platzieren.

Lokale Netzwerkbeschränkungen

Android-Apps, die auf einem Emulator ausgeführt werden, können eine Verbindung mit dem Netzwerk herstellen, das auf Ihrem . Apps werden jedoch über den Emulator und nicht direkt mit der Hardware und dem Emulator verbunden. funktioniert wie eine normale Anwendung auf Ihrer Workstation. Dies kann zu einigen Einschränkungen führen:

  • Die Kommunikation mit dem emulierten Gerät wird möglicherweise durch eine Firewall blockiert das auf Ihrem Computer ausgeführt wird.
  • Die Kommunikation mit dem emulierten Gerät wird möglicherweise durch ein anderes blockiert (physische) Firewall oder Router, mit dem Ihr Computer verbunden ist.

Der virtuelle Router des Emulators sollte alle ausgehenden TCP- und UDP-Verbindungen und -Nachrichten im Namen des emulierten Geräts, sofern Ihre lässt es die Netzwerkumgebung des Entwicklungsrechners zu. Es sind keine integrierte Einschränkungen für Portnummern oder -bereiche, nur die, die durch Ihre Host-Betriebssystem und Netzwerk.

Je nach Umgebung kann der Emulator möglicherweise keine anderen (wie z. B. ICMP für „Ping“). Derzeit enthält die Emulator unterstützt IGMP oder Multicast nicht.

Netzwerkweiterleitung verwenden

Um mit einer Emulatorinstanz hinter ihrem virtuellen Router zu kommunizieren, Netzwerkweiterleitung auf dem virtuellen Router einrichten. Clients können dann eine Verbindung an einen bestimmten Gastport am Router, während der Router Traffic weiterleitet. und von diesem Port zum emulierten Port des Gerätehosts.

Erstellen Sie zum Einrichten der Netzwerkweiterleitung eine Zuordnung von Host und Gast und Adressen in der Emulatorinstanz. Es gibt zwei Möglichkeiten, Netzwerkweiterleitung: mit den Befehlen der Emulatorkonsole und der Android- Debug Bridge-Tool (adb), wie in den folgenden Abschnitten beschrieben.

Weiterleitung über die Emulatorkonsole einrichten

Jede Emulatorinstanz stellt eine Steuerkonsole bereit, mit der Sie eine Verbindung herstellen können geben Sie Befehle ein, die für diese Instanz spezifisch sind. Verwenden Sie die Methode redir-Konsolenbefehl zum Einrichten der Weiterleitung für einen Emulatorinstanz.

Ermitteln Sie zuerst die Portnummer der Konsole für die Zielemulatorinstanz. Beispiel: Die Portnummer der Konsole für die erste gestartete Emulatorinstanz ist 5554. Stellen Sie als Nächstes eine Verbindung zur Konsole der Zielemulatorinstanz her und geben Sie die Portnummer der Konsole so:

telnet localhost 5554

Sobald die Verbindung hergestellt ist, müssen Sie sich authentifizieren, bevor Sie die Weiterleitung einrichten können. Weitere Informationen finden Sie unter Eine Konsolensitzung starten und beenden für wie das geht. Verwenden Sie nach der Authentifizierung den Befehl redir, um mit Weiterleitung.

So fügen Sie eine Weiterleitung hinzu:

redir add <protocol>:<host-port>:<guest-port>

Dabei ist <protocol> entweder tcp oder udp. und <host-port> und <guest-port> haben den zwischen Ihrer Maschine und dem emulierten System.

Mit dem folgenden Befehl wird z. B. eine Weiterleitung eingerichtet, die alle eingehende TCP-Verbindungen zu Ihrem Host-(Entwicklungs-)Computer auf 127.0.0.1:5000 und übergibt sie am 10.0.2.15:6000 an das emulierte System:

redir add tcp:5000:6000

Verwenden Sie den Befehl redir del, um eine Weiterleitung zu löschen. Bis Um alle Weiterleitungen für eine bestimmte Instanz aufzulisten, verwenden Sie redir list. Weitere Informationen zu diesen und anderen Konsolenbefehlen finden Sie unter Befehle an die Emulator-Konsole senden.

Beachten Sie, dass Portnummern durch Ihre lokale Umgebung eingeschränkt sind. In der Regel können Sie Host-Portnummern unter 1024 nicht ohne spezielle Administratorberechtigungen. Sie können auch keine Weiterleitung für eine Hostport, der bereits von einem anderen Prozess auf Ihrem Computer verwendet wird. Dabei gibt redir eine entsprechende Fehlermeldung aus.

Weiterleitung über ADB einrichten

Das Android Debug Bridge-Tool (adb) bietet eine Portweiterleitung, eine alternative die Netzwerkweiterleitung einrichten. Weitere Informationen findest du unter Portweiterleitung einrichten in der adb Dokumentation.

Hinweis: adb bietet derzeit keine Möglichkeit, eine Weiterleitung zu entfernen. außer dass Sie den adb-Server beenden.

DNS-Einstellungen für den Emulator konfigurieren

Beim Start liest der Emulator die Liste der DNS-Server, die Ihr System nutzt, derzeit verwendet wird. Die IP-Adressen von bis zu vier Servern werden auf diesem und richtet Aliase für sie in den emulierten Adressen 10.0.2.3, 10.0.2.4, 10.0.2.5 und 10.0.2.6.

Unter Linux und macOS ruft der Emulator die DNS-Serveradressen durch Parsen von die Datei /etc/resolv.conf. Unter Windows erhält der Emulator die Methode indem Sie die GetNetworkParams() API aufrufen. Beachten Sie, dass dies bedeutet normalerweise, dass der Emulator den Inhalt Ihrer "Hosts" Datei (/etc/hosts unter Linux/macOS, %WINDOWS%/system32/HOSTS unter Windows).

Wenn Sie den Emulator über die Befehlszeile starten, können Sie den Befehl -dns-server <serverList>-Option, um den Parameter manuell anzugeben. Adressen der zu verwendenden DNS-Server, wobei <serverList> durch Kommas getrennt ist eine Liste der Servernamen oder IP-Adressen. Diese Option kann nützlich sein, im emulierten Netzwerk auf Probleme mit der DNS-Auflösung stoßen, z. B. „Unbekannter Hostfehler“ angezeigt, die im Webbrowser angezeigt wird.

Emulator mit einem Proxy verwenden

In vielen Unternehmensnetzwerken werden direkte Verbindungen zum Internet durch Netzwerkadministratoren. Stattdessen müssen Internetverbindungen eine bestimmte Proxy. Für den Zugriff auf das Internet in einem Netzwerk mit Proxy-Anforderung muss wissen, dass es einen Proxy gibt und dass er eine Verbindung zu diesem herstellen muss.

Aufgrund der Beschaffenheit von HTTP ist eine direkte Webserververbindung und eine Verbindung durch Proxy führen zu unterschiedlichen GET-Anforderungen. Der Emulator schreibt transparent die GET-Anfragen vom virtuellen Gerät, bevor Sie mit dem Proxy kommunizieren, damit es funktioniert.

Wenn der Emulator über einen Proxyserver auf das Internet zugreifen muss, können Sie Folgendes konfigurieren: benutzerdefinierten HTTP-Proxy aus dem Bildschirm Erweiterte Steuerung des Emulators an:

  1. Klicken Sie bei geöffnetem Emulator auf das Dreipunkt-Menü .
  2. Klicken Sie auf Einstellungen und Proxy
  3. Legen Sie Ihre HTTP-Proxy-Einstellungen fest.

Alternativ können Sie über die Befehlszeile einen Proxy mit der Methode -http-proxy <proxy> beim Starten des Emulators. Geben Sie in diesem Fall Proxyinformationen an. in <proxy> in einem der folgenden Formate:

http://<machineName>:<port>

oder

http://<username>:<password>@<machineName>:<port>

Mit der Option -http-proxy wird erzwungen, dass der Emulator die angegebene HTTP- oder HTTPS-Proxy für alle ausgehenden TCP-Verbindungen. Weiterleitung für UDP ist nicht unterstützt.

Alternativ können Sie die Umgebungsvariable http_proxy durch den Wert, den Sie für <proxy>. In diesem Fall müssen Sie keinen Wert für <proxy> im -http-proxy-Befehl: der Emulator überprüft den Wert der Umgebungsvariablen http_proxy unter wird gestartet und verwendet seinen Wert automatisch, falls dieser definiert ist.

Sie können die Option -debug-proxy verwenden, um den Proxy zu diagnostizieren Verbindungsprobleme.

Interconnect-Emulatorinstanzen

Damit eine Emulatorinstanz mit einer anderen kommunizieren kann, Netzwerkweiterleitung wie im Folgenden beschrieben.

Angenommen, Ihre Umgebung wird so dargestellt:

  • A ist Ihre Entwicklungsmaschine.
  • 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, zu dem C eine Verbindung herstellt, legen Sie wie folgt hoch:

  1. Server auf B einrichten und dabei 10.0.2.15:<serverPort>.
  2. Richten Sie in der B-Konsole eine Weiterleitung von A:localhost:<localPort> bis B:10.0.2.15:<serverPort>.
  3. Bitten Sie in C, den Client mit 10.0.2.2:<localPort> zu verbinden.

Wenn Sie beispielsweise einen HTTP-Server ausführen möchten, wählen Sie <serverPort> als 80 und <localPort> als 80 8080:

  • B hört am 10.0.2.15:80 zu.
  • Geben Sie in der B-Konsole redir add tcp:8080:80. ein.
  • C stellt eine Verbindung zu 10.0.2.2:8080 her.

Sprachanruf oder SMS an eine andere Emulatorinstanz senden

Der Emulator leitet simulierte Sprachanrufe und SMS automatisch von einer Instanz an eine andere. Wenn Sie einen Sprachanruf oder eine SMS senden möchten, verwenden Sie die Telefon-App bzw. die SMS-App. aus einem der Emulatoren.

So initiieren Sie einen simulierten Sprachanruf zu einer anderen Emulatorinstanz:

  1. Starten Sie die Telefon-App in der ursprünglichen Emulatorinstanz.
  2. Geben Sie als zu wählende Nummer die Konsolen-Portnummer der Zielinstanz ein.

    Sie können Ermitteln Sie die Konsolen-Portnummer der Zielinstanz, indem Sie deren Fenstertitel überprüfen, wenn es in einem separaten Fenster ausgeführt wird. Dies gilt jedoch nicht, wenn sie in einem Tool-Fenster ausgeführt wird. Die Die Portnummer für die Konsole wird als „Android Emulator (<port>)“ gemeldet.

    Die Methode Der Befehl adb devices gibt eine Liste der laufenden virtuellen Geräte und deren Konsolenport aus Zahlen. Weitere Informationen finden Sie unter Abfrage für Geräte.

  3. Klicken Sie auf die Schaltfläche zum Wählen. Ein neuer eingehender Anruf wird in der Zielemulatorinstanz angezeigt.

So senden Sie eine SMS an eine andere Emulatorinstanz:

  1. Starten Sie die SMS-App, falls verfügbar.
  2. Geben Sie die Portnummer der Konsole der Zielemulatorinstanz als SMS-Adresse an.
  3. Geben Sie den Nachrichtentext ein.
  4. Senden Sie die Nachricht. Die Nachricht wird an die Zielemulatorinstanz gesendet.
  5. Sie können auch eine Verbindung zu einer Emulatorkonsole herstellen, um einen eingehenden Sprachanruf oder eine eingehende SMS zu simulieren. Weitere Informationen finden Sie unter Telefonieemulation und SMS-Emulation: