エミュレータ コンソール コマンドを送信する

実行中の各仮想デバイスでは、エミュレートしたデバイス環境に対してクエリを実行したり、制御したりできるコンソールを利用できます。たとえば、コンソールを使用することで、エミュレータでアプリを実行している最中に、ポート リダイレクト、ネットワークの特性、電話のイベントを管理できます。

次のコマンドを実行するには、エミュレータがすでに実行されている必要があります。エミュレータの実行の詳細については、Android Emulator 上でアプリを実行すると、コマンドラインからエミュレータを起動するを参照してください。

コンソール セッションを開始、停止する

ターミナル ウィンドウからコンソールにアクセスしてコマンドを入力するには、telnet を使用してコンソール ポートに接続し、認証トークンを入力します。コンソールに [OK] が表示されるたびに、コマンドの受け付けが可能になります。一般的なプロンプトはありません。

実行中の仮想デバイスのコンソールに接続するには:

  1. ターミナル ウィンドウを開いて、以下のコマンドを入力します。
  2. telnet localhost console-port

    エミュレータ ウィンドウのタイトルには、別のウィンドウで実行しているときはコンソール ポート番号が表示されますが、ツール ウィンドウで実行しているときは表示されません。コンソール ポート番号 5554 を使用するエミュレータの場合、ウィンドウ タイトルは Pixel8_API_34:5554 になります。また、adb devices コマンドを使用すると、実行中の仮想デバイスとそのコンソール ポート番号のリストが出力されます。詳細については、デバイスのクエリを行うをご覧ください。

    注: エミュレータはポート番号 5554~5585 で接続をリッスンし、localhost からの接続のみを受け入れます。

  3. コンソールに OK が表示されたら auth auth_token コマンドを入力します。
  4. コンソール コマンドを入力するには、エミュレータ コンソールで認証が必要です。auth_token は、ホーム ディレクトリにある .emulator_console_auth_token ファイルの内容と一致する必要があります。

    このファイルが存在しない場合、telnet localhost console-port コマンドを入力すると、ランダムに生成された認証トークンを含むファイルが作成されます。認証を無効にするには、トークンを .emulator_console_auth_token ファイルから削除するか、空のファイルを作成します(ファイルが存在しない場合)。

  5. コンソールに接続したら、コンソール コマンドを入力します。
  6. helphelp commandhelp-verbose のいずれかを入力すると、コンソール コマンドのリストが表示され、特定のコマンドを確認できます。

  7. コンソール セッションを終了するには、quit または exit と入力します。

セッションの例を以下に示します。

$ telnet localhost 5554
Trying ::1...
telnet: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/Users/me/.emulator_console_auth_token'
OK
auth 123456789ABCdefZ
Android Console: type 'help' for a list of commands
OK
help-verbose
Android console command help:
    help|h|?         Prints a list of commands
    help-verbose     Prints a list of commands with descriptions
    ping             Checks if the emulator is alive
    automation       Manages emulator automation
    event            Simulates hardware events
    geo              Geo-location commands
    gsm              GSM related commands
    cdma             CDMA related commands
    crash            Crashes the emulator instance
    crash-on-exit    Simulates crash on exit for the emulator instance
    kill             Terminates the emulator instance
    restart          Restarts the emulator instance
    network          Manages network settings
    power            Power related commands
    quit|exit        Quits control session
    redir            Manages port redirections
    sms              SMS related commands
    avd              Controls virtual device execution
    qemu             QEMU-specific commands
    sensor           Manages emulator sensors
    physics          Manages physical model
    finger           Manages emulator finger print
    debug            Controls the emulator debug output tags
    rotate           Rotates the screen clockwise by 90 degrees
    screenrecord     Records the emulator's display
    fold             Folds the device
    unfold           Unfolds the device
    multidisplay     Configures the multi-display
    nodraw           turn on/off NoDraw mode. (experimental)
    resize-display   resize the display resolution to the preset size
    virtualscene-image  customize virtualscene image for virtulscene camera
    proxy            manage network proxy server settings
    phonenumber      set phone number for the device


try 'help <command>' for command-specific help
OK
exit
Connection closed by foreign host.

エミュレータ コマンド リファレンス

次の表に、エミュレータ コンソール コマンドと、そのパラメータおよび値を示します。

表 1. エミュレータ コンソール コマンド

一般的なコマンド 説明
avd {stop|start|status|name} 以下を指定することで、仮想デバイスのクエリ、制御、管理を実行できます。
  • stop: デバイスの実行を停止します。
  • start: デバイスの実行を開始します。
  • status: 仮想デバイスのステータス(running または stopped)をクエリします。
  • name: 仮想デバイス名をクエリします。
avd snapshot {list|save name|load name|delete name} 以下を指定することで、スナップショットでデバイスの状態を保存したり、状態を復元したりできます。
  • list: 保存されたすべてのスナップショットをリストします。
  • save name: スナップショットに name という名前を付けて保存します。
  • load name: 指定した名前のスナップショットを読み込みます。
  • delete name: 指定した名前のスナップショットを削除します。

次の例では、firstactivitysnapshot という名前でスナップショットを保存しています。

avd snapshot save firstactivitysnapshot
fold デバイスを折りたたんで、小さい画面構成を表示します(デバイスが折りたたみ式で、現在開かれている場合)。
unfold デバイスを開いて、大きな画面構成を表示します(デバイスが折りたたみ式で、現在閉じられている場合)。
kill 仮想デバイスを終了します。
ping 仮想デバイスが実行されているかどうかを確認します。
rotate AVD を反時計回りに 45 度ずつ回転させます。
エミュレータのクラッシュ 説明
crash アプリの実行中にエミュレータをクラッシュさせます。
crash-on-exit アプリの終了時にエミュレータをクラッシュさせます。
デバッグタグ 説明
debug tags ...

エミュレータの特定部分からのデバッグ メッセージを有効または無効にします。tags パラメータは、emulator -help-debug-tags を実行したときに表示されるデバッグタグのリストに存在する値である必要があります。-help-debug-tags オプションの詳細については、通常使用されるオプションの表をご覧ください。

次の例では、radio タグを有効にしています。

debug radio
ポート リダイレクト 説明
redir list 現在のポート リダイレクトをリストします。
redir add protocol:host-port:guest-port 以下を指定することで、新しいポート リダイレクトを追加できます。
  • protocol: tcp または udp のいずれかを指定します。
  • host-port: ホスト上で開くポート番号。
  • guest-port: データのルーティング先となる、エミュレータ上のポート番号。
redir del protocol:host-port ポート リダイレクトを削除します。
  • protocol: tcp または udp のいずれかを指定します。
  • host-port: ホスト上で開くポート番号。
位置情報 説明

エミュレータに GPS フィックスを送信して、エミュレータ内で実行されているアプリにレポートする地理的位置を設定します。

仮想デバイスが実行されるとすぐに、次のいずれかの geo コマンドを発行できます。エミュレータは、仮の現在地情報プロバイダを作成して、入力した位置情報を設定します。このプロバイダは、アプリによって設定された位置情報リスナーに応答し、LocationManager へ位置情報を提供します。どのアプリも LocationManager.getLastKnownLocation("gps") を呼び出すことで、位置情報マネージャーにクエリを行い、エミュレートしたデバイスの現在の GPS フィックスを取得できます。

geo fix longitude latitude [altitude] [satellites] [velocity] エミュレータにシンプルな GPS フィックスを送信します。longitudelatitude を 10 進数で指定します。1~12 の数字を使用して、位置決定に使用する satellites の数を指定し、altitude(メートル単位)と velocity(ノット単位)を指定します。
geo nmea sentence エミュレートした GPS モデムからの送信であるかのように、エミュレートしたデバイスに NMEA 0183 センテンスを送信します。「$GP」で sentence を開始します。現在、「$GPGGA」文と「$GPRCM」文のみがサポートされています。次の例は、GPS 受信機の時刻、位置、修正データを取得する GPGGA(グローバル ポジショニング システムの修正データ)文です。
geo nmea $GPGGA ,hhmmss.ss,llll.ll,a,yyyyy.yy,a,x,xx,x.x,x.x,M,x.x,M,x.x,xxxx
疑似ハードウェア イベント 説明
event types すべての疑似イベントタイプをリストします。コードを持つイベントの場合、コード番号は右側の括弧内にリストされます。

event types
event <type> can be an integer or one of the following aliases:
    EV_SYN
    EV_KEY    (405 code aliases)
    EV_REL    (2 code aliases)
    EV_ABS    (27 code aliases)
    EV_MSC
    EV_SW     (4 code aliases)
    EV_LED
    EV_SND
    EV_REP
    EV_FF
    EV_PWR
    EV_FF_STATUS
    EV_MAX
OK
        

event send types [types ...] 1 つ以上の疑似イベントタイプを送信します。
event codes type 指定した疑似イベントタイプのイベントコードをリストします。
event send type[:code]:[value] [...] オプションのコードとコード値を持つ、1 つ以上の疑似イベントを送信します。

送信されるイベントを正確に把握するには、エミュレータのボタンを手動で押しながら adb コマンドを使用します。

以下は、電源ボタンを押したときに生成されるイベントです。

adb shell getevent -lt

/dev/input/event12: EV_KEY       KEY_POWER            DOWN
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
/dev/input/event12: EV_KEY       KEY_POWER            UP
/dev/input/event12: EV_SYN       SYN_REPORT           00000000
      
たとえば、電源ボタンの長押しをシミュレートするには、 keydown と keyup の 2 つの EV_KEY イベント:
event send EV_KEY:KEY_POWER:0
OK
event send EV_KEY:KEY_POWER:1
OK
      

event text message キー押下をシミュレートする文字列を送信します。メッセージは UTF-8 文字列にする必要があります。Unicode の場合、現在のデバイスのキーボードに従って逆マッピングされ、サポートされていない文字は警告もなく破棄されます。
電源状態の制御 説明
power display バッテリーと充電器の状態を表示します。
power ac {on|off} AC 充電の状態を on または off に設定します。
power status {unknown|charging|discharging|not-charging|full} バッテリー ステータスを指定したとおりに変更します。
power present {true|false} バッテリーの有無の状態を設定します。
power health {unknown|good|overheat|dead|overvoltage|failure} バッテリーの健全性の状態を設定します。
power capacity percent バッテリー残量の状態を 0~100 パーセントで設定します。
ネットワーク接続のステータス 説明
network status ネットワークのステータス、現在の遅延、速度の特性を確認します。
network delay latency

エミュレートしたネットワーク レイテンシを変更します。

エミュレータを使用すると、さまざまなネットワーク レイテンシ レベルをシミュレートできるため、実際の実行条件に近い環境でアプリをテストできます。エミュレータの起動時にレイテンシのレベルまたは範囲を設定するか、アプリの実行中にエミュレータでコンソールを使用してレイテンシを変更できます。

ネットワークの latency は次のいずれかの形式で指定します(数値単位はミリ秒)。

ネットワーク レイテンシの形式:

  • gprs: GPRS、150~550 のレイテンシ範囲を使用します。
  • edge: EDGE / EGPRS、80~400 のレイテンシ遅延範囲を使用します。
  • umts: UMTS / 3G、35~200 のレイテンシ範囲を使用します。
  • none: レイテンシなし。
  • num: 指定されたレイテンシをミリ秒単位でエミュレートします。
  • min:max: 指定されたレイテンシ範囲をエミュレートします。

エミュレータの起動時にレイテンシを設定するには、-netdelay エミュレータ オプションを使用して、サポートされている latency 値(前掲のネットワーク レイテンシの形式のリストを参照)を指定します。次に例を示します。

emulator -netdelay gprs
emulator -netdelay 40,100

エミュレータの実行中にネットワークの遅延を変更するには、コンソールに接続し、netdelay コマンドを使用して、前掲のネットワーク レイテンシの形式のリストからサポートされている latency 値を指定します。

network delay gprs
network delay 40 100
network speed speed エミュレータを使用して、さまざまなネットワーク転送速度をシミュレートできます。

エミュレータの起動時に転送の速度または範囲を設定するか、エミュレータでアプリの実行中にコンソールを使用して転送速度を変更できます。

ネットワーク speed は次のいずれかの形式で指定します(数値単位はキロビット/秒)。

ネットワーク速度の形式:

  • gsm: GSM / CSD、上り 14.4、下り 14.4 の速度を使用します。
  • hscsd: HSCSD、上り 14.4、下り 43.2 の速度を使用します。
  • gprs: GPRS、上り 40.0、下り 80.0 の速度を使用します。
  • edge: EDGE / EGPRS、上り 118.4、下り 236.8 の速度を使用します。
  • umts: UMTS / 3G、上り 128.0、下り 1,920 の速度を使用します。
  • hsdpa: HSDPA、上り 348.0、下り 14,400.0 の速度を使用します。
  • lte: LTE、上り 58,000、下り 173,000 の速度を使用します。
  • evdo: EVDO、上り 75,000 と下り 280,000 の速度を使用します。
  • full: 速度は無制限ですが、コンピュータの接続速度に依存します。
  • num: アップロードとダウンロードの両方に使用される正確な速度をキロビット/秒で設定します。
  • up:down: アップロードとダウンロードそれぞれの正確な速度をキロビット/秒で設定します。

エミュレータの起動時にネットワーク速度を設定するには、-netspeed エミュレータ オプションを使用して、サポートされている speed 値(前掲のネットワーク速度の形式のリストを参照)を指定します。次に例を示します。

emulator -netspeed gsm @Pixel_API_26
emulator -netspeed 14.4,80 @Pixel_API_26

エミュレータの実行中にネットワーク速度を変更するには、コンソールに接続し、network speed コマンドを使用して、前掲のネットワーク速度の形式のリストからサポートされている speed 値を指定します。

network speed 14.4 80
network capture {start|stop} file パケットをファイルに送信します。パラメータとパラメータ値の説明を以下に示します。
  • start file: 指定されたファイルへのパケットの送信を開始します。
  • stop file: 指定されたファイルへのパケットの送信を停止します。
電話のエミュレーション 説明
Android Emulator には、エミュレータで電話機能をシミュレートできる独自の GSM および CDMA をエミュレートしたモデムが含まれています。たとえば、GSM を使用すると、電話の着信のシミュレートや、データ接続の確立と終了が可能です。CDMA を使用する場合は、サブスクリプション ソースと優先ローミング リストを指定します。Android システムは、実際の通話とまったく同じようにシミュレートされた通話を処理します。エミュレータは通話音声をサポートしていません。
gsm {call|accept|cancel|busy} phonenumber gsm パラメータは以下のとおりです。
  • call: phonenumber からの電話の着信をシミュレートします。
  • accept: phonenumber からの電話の着信を受け付けて、通話状態を active に変更します。現在の状態が waiting または held の場合にのみ、通話状態を active に変更できます。
  • cancel: phonenumber との間の電話の着信または発信を終了します。
  • busy: phonenumber への電話の発信を終了し、通話状態を busy に変更します。現在の状態が waiting の場合にのみ、通話状態を busy に変更できます。
gsm {data|voice} state 次のように、data state コマンドは GPRS データ接続の状態を変更し、data voice state コマンドは GPRS 音声接続の状態を変更します。
  • unregistered: 利用可能なネットワークがありません。
  • home: ローカル ネットワークに接続中、非ローミング。
  • roaming: ローミング ネットワークに接続中。
  • searching: ネットワークの検索中。
  • denied: 緊急通報のみ。
  • off: unregistered と同様。
  • on: home と同様。
gsm hold 通話の状態を hold に変更します。現在の状態が active または waiting の場合にのみ、通話状態を hold に変更できます。
gsm list すべての電話の着信および発信とその状態をリストします。
gsm status 現在の GSM の音声とデータの状態をレポートします。値については、voice コマンドと data コマンドの説明をご覧ください。
gsm signal {rssi|ber} 次の 15 秒間の更新における、レポートされる信号強度(rssi)と符号誤り率(ber)を変更します。パラメータとその値の説明を以下に示します。
  • rssi 範囲は 0~31 で、不明の場合は 99 です。
  • ber 範囲は 0~7 で、不明の場合は 99 です。
gsm signal-profile num 信号強度プロファイルを設定します。num は 0~4 の数字です。
cdma ssource source 現在の CDMA サブスクリプション ソースを設定します。source は、以下のように、CDMA 通信事業者の加入者とその値が含まれるネットワークベースの許可リストです。
  • nv: 不揮発性 RAM からサブスクリプションを読み取ります。
  • ruim: Removable User Identity Module(RUIM)からサブスクリプションを読み取ります。
cdma prl_version version 現在の優先ローミング リスト(PRL)バージョンをダンプします。バージョン番号は、システムの選択と取得のプロセス中に使用される情報が含まれる PRL データベース用です。
エミュレータでセンサーを管理する 説明
これらのコマンドは、AVD で使用可能なセンサーに関連します。sensor コマンドを使用する以外に、[Accelerometer] タブと [Additional sensors] タブの [Virtual sensors] 画面で、エミュレータの設定の表示と調整ができます。
sensor status すべてのセンサーとそのステータスをリストします。sensor status コマンドの出力例は以下のとおりです。
sensor get sensor-name sensor-name の設定を取得します。次の例では、加速度センサーの値を取得しています。
sensor get acceleration
acceleration = 2.23517e-07:9.77631:0.812348

コロン(:)で区切られた acceleration 値は、仮想センサーの x、y、z 座標を指しています。

sensor set sensor-name value-x:value-y:value-z sensor-name の値を設定します。次の例では、加速度センサーを、コロンで区切られた x、y、z 値に設定しています。
sensor set acceleration 2.23517e-07:9.77631:0.812348
SMS のエミュレーション 説明
sms send sender-phone-number textmessage エミュレートされた着信 SMS を生成します。パラメータとその値の説明を以下に示します。
  • sender-phone-number: 任意の数値文字列を格納します。
  • textmessage: SMS メッセージ。

次の例では、メッセージ「hi there」を電話番号 4085555555 に送信しています。

sms send 4085555555 hi there

コンソールは、SMS メッセージを Android フレームワークに転送します。Android フレームワークは、エミュレータのアプリ(メッセージ アプリなど)にメッセージを渡し、そのアプリが SMS を処理します。10 桁の番号を渡すと、アプリはその番号を電話番号の形式に合わせます。数値文字列が 10 桁でない場合は、その番号が送信された方法が表示されます。

指紋シミュレーション 説明
finger touch fingerprint-id 指がセンサーに触れた状態をシミュレートします。
finger remove 指が離れた状態をシミュレートします。

これらのコマンドの使用方法については、次の指紋のシミュレーションと検証のセクションをご覧ください。

指紋のシミュレーションと検証

図 1. 指紋認証画面。

アプリの指紋認証をシミュレートして検証するには、finger コマンドを使用します。SDK Tools 24.3 以降、Android 6.0(API レベル 23)以降が必要です。

指紋認証をシミュレートして検証する手順は次のとおりです。

  1. まだ指紋 ID を設定していない場合は、[Settings] > [Security] > [Fingerprint] を選択し、登録手順に沿ってエミュレータに新しい指紋を登録します。
  2. 指紋認証を受け入れるようにアプリを設定します。この設定を行うと、デバイスに指紋認証画面が表示されます。
  3. アプリに指紋認証画面が表示されている間に、コンソールに移動して、finger touch コマンドと作成した指紋 ID を入力します。これにより、指がセンサーに触れた状態がシミュレートされます。
  4. 次に、finger remove コマンドを入力して、指が離れた状態をシミュレートします。

    アプリは、実際にユーザーが指紋認証センサーに指で触れて、それから指を離したときと同じように応答する必要があります。