エミュレータの高度なネットワーキング機能

Android Emulator には、物理的な無線を使用せずに Android アプリを開発およびテストできるネットワーク シミュレータが含まれています。

このページでは、ネットワーク シミュレータの機能を制御するためのコマンドライン オプションについて説明します。

コマンドラインからエミュレータを起動する場合は、エミュレータ フラグ-netsim-args フラグを使用して、ネットワーク シミュレータに引数を渡します。

emulator -netsim-args="arg1 [arg2 ...]"

たとえば、パケット キャプチャとロギングを有効にして、特定の HCI ポートを設定するには、次のようにします。

emulator -netsim-args="--pcap --logtostderr --verbose --hci-port 12345"

Netsim の構成

これらのフラグは、netsim デーモンの一般的な動作と設定を制御します。

  • -l, --logtostderr: ログメッセージをログファイルではなく stderr に送信するかどうかを設定します。エミュレータの出力でログを直接確認する場合に便利です。
  • -v, --verbose: 詳細モードを有効にします。このモードでは、より詳細なログが出力されます。これは、複雑な問題のデバッグに役立ちます。
  • --hci-port <HCI_PORT>: カスタム HCI ポートを設定します。複数のエミュレータを実行したり、特定の HCI ポートに接続したりする場合に便利です。

アーティファクトのディレクトリを指定する

ネットワーク シミュレータ アーティファクトのディレクトリを指定するには、環境変数 $ANDROID_TMP を設定します。

export ANDROID_TMP=/path/to/your/directory

ネットワーク シミュレータは、アーティファクトを $ANDROID_TMP/android/netsimd/ ディレクトリに保存します。環境変数 $USER が設定されている場合、ネットワーク シミュレータはアーティファクトを $ANDROID_TMP/android{-$USER}/netsimd/ に保存します。

ネットワーク パケットをキャプチャする

パケット キャプチャを有効にするには、エミュレータで --pcap 引数を使用します。

emulator -netsim-args="--pcap"

この機能は、ネットワークの問題のデバッグやトラフィックの分析に役立ちます。ネットワーク シミュレータは、無線チップごとにパケット キャプチャ(pcap)ファイルを保存します。これらのファイルは、Wireshark などのツールで開くことができます。ネットワーク シミュレータは、パケット キャプチャ ファイルを netsimd アーティファクト ディレクトリの pcap サブディレクトリに保存します。

Wi-Fi アクセス ポイント(カスタム SSID と暗号化)を構成する

Wi-Fi アクセス ポイントを構成するには、エミュレータで --wifi 引数を使用します。次に例を示します。

emulator -netsim-args="--wifi <SSID> <PASSWORD>"
  • SSID: ネットワーク名。
  • PASSWORD: ネットワーク パスワードは省略可能で、8 文字以上にする必要があります。設定すると、アクセス ポイントは WPA2(CCMP)で暗号化されます。

受信信号強度(RSSI)を設定する

ネットワーク シミュレータは、--rssi フラグを使用して特定の無線に特定の RSSI 値を設定することをサポートしています。

emulator -netsim-args="--rssi <PHY_KIND:RSSI_VALUE>"
  • PHY_KIND: Bluetooth 無線のタイプ(blebt_classic など)。このパラメータでは、大文字と小文字を区別しないエイリアスがサポートされています。
  • RSSI_VALUE: RSSI 値(i8(整数))。

たとえば、次のコマンドは BLE トラフィックの RSSI を -65 dBm に設定します。

emulator -netsim-args="--rssi=ble:-65"

このフラグは、異なるラジオに対して複数回指定できます(例: --rssi=bt_classic:-65 --rssi=ble:-72)。