エミュレータは、汎用性の高いネットワーク機能を備えています。これを使用して、アプリの複雑なモデリング環境やテスト環境をセットアップできます。このページでは、エミュレータのネットワーク アーキテクチャと機能について説明します。
各インスタンスの仮想ルーターは、10.0.2/24 ネットワーク アドレス空間を管理します。
- ルーターによって管理されるアドレスはすべて、
10.0.2.xxの形式です(xxは数字)。
次の表に、この空間内のアドレスがエミュレータまたはルーターによってどのように事前に割り当てられるかを示します。
| ネットワーク アドレス | 説明 |
|---|---|
| 10.0.2.1 | ルーターまたはゲートウェイ アドレス |
| 10.0.2.2 | ホスト ループバック インターフェースへの特殊エイリアス(開発マシンの 127.0.0.1) |
| 10.0.2.3 | 1 番目の DNS サーバー |
| 10.0.2.4、10.0.2.5、10.0.2.6 | オプションの 2 番目、3 番目、4 番目の DNS サーバー |
| 10.0.2.15 | イーサネットを使用して接続した場合のエミュレートされたデバイスのネットワーク |
| 10.0.2.16 | Wi-Fi を使用して接続した場合のエミュレートされたデバイス ネットワーク。 |
| 127.0.0.1 | エミュレートしたデバイスのループバック インターフェース |
Wi-Fi のほか、イーサネットを使用して接続している場合、実行中のすべてのエミュレータ インスタンスで同じアドレス割り当てが使用されます。つまり、マシン上で 2 つのインスタンスを同時に実行している場合、それぞれに固有のルーターがあり、その背後でそれぞれ 10.0.2.15 の IP アドレスが割り当てられています。2 つのインスタンスはルーターによって分離されており、同じネットワーク上で相互に検出することはできません。エミュレータ インスタンス間の通信を TCP/UDP で実現する方法については、エミュレータ インスタンスを相互接続するをご覧ください。
開発マシンのアドレス 127.0.0.1 は、エミュレータのループバック インターフェースに対応します。開発マシンのループバック インターフェースで実行されているサービスにアクセスするには、代わりに特殊アドレス 10.0.2.2 を使用します。
エミュレートしたデバイスの事前割り当てアドレスは、Android Emulator に固有であり、特にルーターまたはファイアウォールの背後でネットワーク アドレス変換される可能性もある実際のデバイスでは、大きく異なる可能性があります。
ローカル ネットワークの制限
エミュレータで実行されている Android アプリは、ワークステーションで利用可能なネットワークに接続できます。ただし、アプリはハードウェアに直接接続するのではなく、エミュレータを介して接続し、エミュレータはワークステーション上で通常のアプリのように動作します。これにより、いくつかの制限が生じる可能性があります。
- エミュレートしたデバイスとの通信は、マシンで実行されているファイアウォール プログラムによってブロックされる場合があります。
- エミュレートしたデバイスとの通信は、マシンが接続されている別の(物理)ファイアウォールまたはルーターによってブロックされる場合があります。
エミュレータの仮想ルーターは、エミュレートしたデバイスに代わってすべてのアウトバウンド TCP / UDP 接続とメッセージを処理できます(開発マシンのネットワーク環境でこれらの接続が許可されている場合)。ホスト オペレーティング システムとネットワークによる制限を除き、ポート番号やポート範囲には初めから設けられている制限はありません。
環境によっては、エミュレータが他のプロトコル(「ping」に使用される ICMP など)をサポートできない場合があります。エミュレータは IGMP をサポートしていません。たとえば、ユーザーは ping コマンドを使用して、ホストマシンやローカル エリア ネットワーク上の他のデバイスに ping を送信することはできません。