コマンドラインからのエミュレータの起動

Android SDK には、コンピュータで実行される仮想デバイスである Android デバイス エミュレータが含まれています。Android Emulator を使用すると、物理デバイスを使用せずに Android アプリを開発およびテストできます。

このページでは、Android Emulator で使用できるコマンドライン機能について説明します。Android Emulator UI の使用方法については、Android Emulator 上でアプリを実行するをご覧ください。

エミュレータの開始

プロジェクトを実行するか、AVD Manager から起動する代わりに、emulator コマンドを使用してエミュレータを起動します。

ターミナルのプロンプトから仮想デバイスを起動するための基本的なコマンドライン構文は次のとおりです。

emulator -avd avd_name [ {-option [value]} … ]
    

または

emulator @avd_name [ {-option [value]} … ]
    

たとえば、Mac で実行されている Android Studio 内からエミュレータを起動する場合、デフォルトのコマンドラインは次のようになります。

/Users/janedoe/Library/Android/sdk/emulator/emulator -avd Nexus_5X_API_23 -netdelay none -netspeed full

エミュレータを起動するときに起動オプションを指定できますが、後で起動オプションを指定することはできません。

AVD 名のリストを表示するには、次のコマンドを入力します。

emulator -list-avds

このオプションを使用すると、Android ホーム ディレクトリにある AVD 名のリストが表示されます。Android ホーム ディレクトリはすべての設定と AVD コンテンツが保存されるユーザー固有のディレクトリのルートです。ANDROID_SDK_HOME 環境変数を設定することにより、デフォルトのホーム ディレクトリをオーバーライドすることもできます。環境変数の設定は、仮想デバイスを起動する前にターミナル ウィンドウで行うか、オペレーティング システムのユーザー設定(Linux の .bashrc ファイル内など)で行うことができます。

Android Emulator を停止するには、エミュレータ ウィンドウを閉じます。

アプリのインストール

Android Studio またはエミュレータ UI を介してアプリをインストールするだけでなく、adb ユーティリティを使用して仮想デバイスにアプリをインストールできます。

adb を使用してアプリをインストールし、アプリを実行してテストする大まかな手順は次のとおりです。

  1. アプリをビルドして実行するの説明に従って、アプリをビルドして APK にパッケージ化します。
  2. 前のセクションで説明したように、必要な起動オプションを使用して、コマンドラインからエミュレータを起動します。
  3. adb を使用してアプリをインストールします。
  4. エミュレータでアプリを実行してテストします。
    エミュレータの実行中に、必要に応じてエミュレータ コンソールを使用してコマンドを発行することもできます。
  5. 仮想デバイスは、再起動後もユーザーデータ ディスク パーティション(userdata-qemu.img) にアプリとその状態データを保存します。このデータをクリアするには、-wipe-data オプション付きでエミュレータを起動するか、AVD Manager でデータを消去します。ユーザーデータ パーティションとその他のストレージの詳細については、次のセクションをご覧ください。
    アプリをアンインストールする方法は、Android デバイスでの場合と同様です。

注: adb ユーティリティは、仮想デバイスを実際の物理デバイスとして認識します。このため、install などの一般的な adb コマンドで -d フラグが必要になる場合があります。-d フラグを使用すると、接続されている複数のデバイスのどれをコマンドの対象として使用するかを指定できます。-d を指定しない場合、エミュレータはリスト内の最初のデバイスを対象にします。

デフォルトのディレクトリとファイルの理解

エミュレータは関連ファイルを使用しますが、AVD システムとデータ ディレクトリが最も重要です。コマンドライン オプションを指定するときに、エミュレータのディレクトリ構造とファイルを理解するのに役立ちます。ただし、通常はデフォルトのディレクトリまたはファイルを変更する必要はありません。

Android Emulator は、Quick Emulator(QEMU)ハイパーバイザを使用します。Android Emulator の初期バージョンでは QEMU 1(goldfish)を使用し、それ以降のバージョンでは QEMU 2(ranchu)を使用しています。

AVD システム ディレクトリ

システム ディレクトリには、エミュレータがオペレーティング システムをシミュレートするために使用する Android システム イメージが含まれています。API レベル、CPU アーキテクチャ、Android バリアントなど、同じタイプのすべての AVD で共有されるプラットフォーム固有の読み取り専用ファイルがあります。デフォルトの場所は次のとおりです。

  • Mac OS X および Linux- ~/Library/Android/sdk/system-images/android-apiLevel/variant/arch/
  • Microsoft Windows XP - C:\Documents and Settings\user\Library\Android\sdk\system-images\android-apiLevel\variant\arch\
  • Windows Vista - C:\Users\user\Library\Android\sdk\system-images\android-apiLevel\variant\arch\

上記の各要素の意味は次のとおりです。

  • apiLevel は API レベルを示す数値、またはプレビュー リリースを示す文字です。たとえば、android-M は Android Marshmallow プレビューを示しています。リリース時には、android-23 で表される API レベル 23 になります。
  • variant は、システム イメージによって実装される特定の機能に対応する名前です(例: google_apisandroid-wear)。
  • arch はターゲットの CPU アーキテクチャです(例: x86)。

-sysdir オプションを使用して、AVD に別のシステム ディレクトリを指定します。

エミュレータは、システム ディレクトリから次のファイルを読み取ります。

ファイル 説明 別のファイルを指定するオプション
kernel-qemu または kernel-ranchu AVD のバイナリ カーネル イメージ。kernel-ranchu は最新バージョンの QEMU 2 エミュレータです。 -kernel
system.img システム イメージの読み取り専用の初期バージョン。具体的には、API レベルとバリアントに対応するシステム ライブラリとデータを含むパーティションです。 -system
ramdisk.img ブート パーティション イメージ。これは、システム イメージがマウントされる前にカーネルによって最初にロードされる system.img のサブセットです。通常、いくつかのバイナリと初期化スクリプトのみが含まれています。 -ramdisk
userdata.img データ パーティションの初期バージョン。エミュレートされたシステムでは data/ として表示され、AVD のすべての書き込み可能なデータが含まれます。エミュレータは、新しい AVD を作成するとき、または ‑wipe-data オプションを使用するときに、このファイルを使用します。詳細については、次のセクションの userdata-qemu.img ファイルの説明をご覧ください。 -initdata
-init-data

AVD データ ディレクトリ

コンテンツ ディレクトリとも呼ばれる AVD データ ディレクトリは、単一の AVD インスタンスに固有であり、AVD のすべての変更可能なデータが含まれています。

デフォルトの場所は次のとおりで、name の部分は AVD 名です。

  • Mac OS X および Linux- ~/.android/avd/name.avd/
  • Microsoft Windows XP - C:\Documents and Settings\user\.android\name.avd\
  • Windows Vista 以降 - C:\Users\user\.android\name.avd\

-datadir オプションを使用して、別の AVD データ ディレクトリを指定します。

次の表に、このディレクトリに含まれる最も重要なファイルを示します。

ファイル 説明 別のファイルを指定するオプション
userdata-qemu.img

エミュレートされたシステムで data/ として表示されるデータ パーティションのコンテンツ。新しい AVD を作成するとき、または -wipe-data オプションを使用して AVD を工場出荷時のデフォルトにリセットするとき、エミュレータはシステム ディレクトリの userdata.img ファイルをコピーしてこのファイルを作成します。

各仮想デバイス インスタンスは、書き込み可能なユーザーデータ イメージを使用して、ユーザーおよびセッション固有のデータを格納します。たとえば、個々のユーザーのインストール済みアプリデータ、設定、データベース、ファイルの保存にこのイメージを使用します。各ユーザーには、そのユーザーが作成した AVD のデータ ディレクトリを格納する異なる ANDROID_SDK_HOME ディレクトリがあります。各 AVD には、単一の userdata-qemu.img ファイルがあります。

-data
cache.img エミュレートされたシステムで cache/ として表示されるキャッシュ パーティション イメージ。最初に AVD を作成するとき、または-wipe-data オプションを使用するときは空です。一時的なダウンロード ファイルを保存し、ダウンロード マネージャーや場合によってはシステムによって読み込まれます。たとえば、ブラウザはエミュレータの実行中にダウンロードしたウェブページと画像をキャッシュするためにこのキャッシュ パーティション イメージを使用します。仮想デバイスの電源を切ると、ファイルは削除されます。-cache オプションを使用すると、ファイルを保持できます。 -cache
sdcard.img

(任意)仮想デバイスで SD カードをシミュレートできる SD カード パーティション イメージ。SD カードのイメージ ファイルの作成には AVD Manager または mksdcard ツールが使用できます。ファイルは開発用コンピュータに保存され、起動時にロードする必要があります。

AVD Manager で AVD を定義する場合、自動的に管理される SD カードファイルを使用するか、mksdcard ツールで作成したファイルを使用するかを選択できます。AVD Manager で、AVD に関連付けられた sdcard.img ファイルを表示できます。-sdcard オプションは、AVD で指定された SD カードファイルを上書きします。

仮想デバイスの実行中にエミュレータ UI または adb ユーティリティを使用して、シミュレートされた SD カードからファイルを参照、送信、コピー、削除できます。実行中の仮想デバイスからシミュレートされた SD カードを取り外すことはできません。

仮想デバイスに読み込まれる前の SD カードファイルにファイルをコピーするには、イメージ ファイルをループデバイスとしてマウントしてから、ファイルをコピーします。または、mtools パッケージなどのユーティリティを使用して、ファイルを直接イメージにコピーします。

エミュレータはファイルをバイトのプールとして処理するため、SD カードの形式は関係ありません。

-wipe-data オプションはこのファイルに影響しないことに注意してください。ファイルをクリアする場合は、ファイルを削除してから、AVD Manager または mksdcard ツールを使用して再作成する必要があります。ファイルのサイズを変更した場合も、ファイルが削除され、新しいファイルが作成されます。

-sdcard

エミュレータが使用するディレクトリおよびファイルのリスト

ファイルの場所は、次の 2 つの方法で確認できます。

  • コマンドラインからエミュレータを起動するときは、-verbose または -debug init オプションを使用して、出力を確認します。
  • emulator -help-option コマンドを使用して、デフォルトのディレクトリをリストします。次に例を示します。
        emulator -help-datadir
    Use '-datadir <dir>' to specify a directory where writable image files will be searched. On this system, the default directory is: /Users/me/.android See '-help-disk-images' for more information about disk image files.

コマンドライン起動オプション

このセクションでは、エミュレータを起動するときにコマンドラインで指定できるオプションを示します。

注: Android Emulator は、信頼性向上に向けて引き続き開発を進めています。さまざまなコマンドライン オプションに対して報告された問題のステータスの確認やバグの報告には、Android Issue Tracker を参照してください。

通常使用されるオプション

次の表に、頻繁に使用する可能性のあるコマンドライン起動オプションを示します。

コマンドライン オプション 説明
クイックブート
-no-snapshot-load コールドブートを実行し、終了時にエミュレータの状態を保存します。
-no-snapshot-save 可能であればクイックブートを実行しますが、終了時にエミュレータの状態を保存しません。
-no-snapshot クイックブート機能を完全に無効にします。エミュレータの状態をロードまたは保存しません。
デバイス ハードウェア
-camera-back mode
-camera-front mode
背面または前面のカメラのエミュレーション モードを設定します。AVD のカメラ設定をオーバーライドします。

mode は次の値のいずれかです。

  • emulated - エミュレータはソフトウェアでカメラをシミュレートします。
  • webcamn - エミュレータは、開発用コンピュータに接続され、番号で指定されたウェブカメラを使用します。たとえば、webcam0 です(ウェブカメラをリストするには、-webcam-list オプションを使用します)。
  • none - 仮想デバイスのカメラを無効にします。

次に例を示します。


emulator @Nexus_5X_API_23 -camera-back webcam0
-webcam-list エミュレーションに使用できる開発用コンピュータ上のウェブカメラをリストします。たとえば、次のようになります。

emulator @Nexus_5X_API_23 -webcam-list
            List of web cameras connected to the computer:
            Camera 'webcam0' is connected to device 'webcam0'
            on channel 0 using pixel format 'UYVY'

この例では、最初の webcam0 はコマンドラインで使用する名前です。2 番目の webcam0 は、開発用コンピュータの OS が使用する名前です。2 番目の名前は OS によって異なります。

SDK Tools 25.2.4 の時点では、AVD 名は必須ですが、将来的には変更される可能性があります。

ディスク イメージとメモリ
-memory size

128〜4,096 MB の物理 RAM サイズを指定します。次に例を示します。


emulator @Nexus_5X_API_23 -memory 2048

この値は、AVD 設定をオーバーライドします。

-sdcard filepath SD カード パーティション イメージ ファイルのファイル名とパスを指定します。次に例を示します。


emulator @Nexus_5X_API_23 -sdcard C:/sd/sdcard.img

ファイルが見つからない場合、エミュレータは SD カードがないものとして起動します。この場合、コマンドは No SD Card Image 警告を返します。

このオプションを指定しない場合、デフォルトはデータ ディレクトリの sdcard.img です(AVD で別の値が指定されていない場合)。エミュレートされた SD カードの詳細については、AVD データ ディレクトリをご覧ください。

-wipe-data ユーザーデータを削除し、初期データファイルからデータをコピーします。このオプションは、仮想デバイスのデータをクリアし、最初に定義されたときと同じ状態に戻します。インストールされているすべてのアプリと設定が削除されます。次に例を示します。


emulator @Nexus_5X_API_23 -wipe-data

デフォルトのユーザーデータ ファイルと初期データファイルはそれぞれ userdata-qemu.imguserdata.img で、ともにデータ ディレクトリに存在します。-wipe-data オプションは、sdcard.img ファイルには影響しません。ユーザーデータの詳細については、デフォルトのディレクトリとファイルの理解をご覧ください。

デバッグ
-debug tags 1 つ以上のタグについてデバッグ メッセージの表示を有効または無効にします。複数のタグは、スペースやカンマ、コロンで区切ります。次に例を示します。


$ emulator @Nexus_5X_API_23 -debug init,metrics

タグを無効にするには、その前にダッシュ(-)を置きます。たとえば、次のオプションは、ネットワーク ソケットとメトリックに関連するものを除くすべてのデバッグ メッセージを表示します。

-debug all,-socket,-metrics

タグとその説明の一覧については、-help-debug-tags オプションを使用してください。次に例を示します。


emulator -help-debug-tags

ANDROID_VERBOSE 環境変数でデフォルトのデバッグタグを定義できます。使用するタグをカンマ区切りリストで定義します。次に、socket タグと gles タグが定義された例を示します。


ANDROID_VERBOSE=socket,gles

これは以下を使用するのと同等です。

-debug-socket -debug-gles

-debug-tag
-debug-no-tag
特定のデバッグ メッセージ タイプを有効にします。デバッグ メッセージ タイプを無効にするには、no 形式を使用します。次に例を示します。


emulator @Nexus_5X_API_23 -debug-all -debug-no-metrics

タグの一覧については、emulator -help-debug-tags コマンドを使用してください。

-logcat logtags 1 つまたは複数のタグの logcat メッセージの表示を有効にして、ターミナル ウィンドウに書き込みます。たとえば、次のコマンドは、すべてのコンポーネントからのエラー メッセージを有効にします。


emulator @Nexus_5X_API_23 -logcat *:e

logtags には、adb logcat logtags コマンドと同じ形式を使用します(詳細については、adb logcat -help と入力してください)。componentName:logLevel 形式の、スペースまたはカンマで区切られたログフィルターの一覧です。 componentName は、ワイルドカード アスタリスク(*)またはコンポーネント名(ActivityManager、SystemServer、InputManager、WindowManager など)です。 logLevel は次の値のいずれかです。

  • v - verbose(詳細)
  • d - debug(デバッグ)
  • i - informative(情報)
  • w - warning(警告)ログレベル
  • e - error(エラー)
  • s - silent(サイレント)

次の例では、情報ログレベルで GSM コンポーネントのメッセージを表示します。


emulator @Nexus_5X_API_23 -logcat '*:s GSM:i'

コマンドラインで -logcat オプションを指定しない場合、エミュレータは ANDROID_LOG_TAGS 環境変数を検索します。ANDROID_LOG_TAGS に有効な logtags 値が定義されていて空でない場合、エミュレータはその値を使用して、デフォルトでターミナルへの logcat 出力を有効にします。また、同じログメッセージや他のログメッセージを adb を介してターミナルにリダイレクトすることもできます。logcat および adb の詳細については、logcat コマンドライン ツールLogcat を使用したログの書き込みと表示Log クラス、adb コマンド リファレンスをご覧ください。

-show-kernel ターミナル ウィンドウにカーネル デバッグ メッセージを表示します。次に例を示します。


emulator @Nexus_5X_API_23 -show-kernel

このオプションの用途の一つは、ブートプロセスが正しく機能するか確認することです。

-verbose エミュレータの初期化メッセージをターミナル ウィンドウに出力します。次に例を示します。


emulator @Nexus_5X_API_23 -verbose

AVD で定義された仮想デバイスの起動時に実際に選択されるファイルと設定が表示されます。このオプションは -debug-init を指定するのと同じです。

ネットワーク
-dns-server servers 指定された DNS サーバーを使用します。servers は、最大 4 つの DNS サーバー名または IP アドレスのカンマ区切りのリストです。次に例を示します。

emulator @Nexus_5X_API_23 -dns-server 192.0.2.0,
192.0.2.255

デフォルトでは、エミュレータは使用している DNS サーバーを検出し、エミュレートされたファイアウォール ネットワークに特別なエイリアスを設定して、Android システムがそれらに直接接続できるようにします。-dns-server オプションを使用して、DNS サーバーの別のリストを指定します。

-http-proxy proxy 指定された HTTP / HTTPS プロキシを介してすべての TCP 接続を確立します。エミュレータがプロキシ サーバー経由でインターネットにアクセスする必要がある場合、このオプションまたは http_proxy 環境変数を使用して適切なリダイレクトを設定できます。次に例を示します。


emulator @Nexus_5X_API_23 -http-proxy myserver:1981

proxy は次のいずれかです。
http://server:port
http://username:password@server:port

http:// プレフィックスは省略できます。

このオプションが指定されていない場合、エミュレータは http_proxy 環境変数を検索し、proxy 形式に一致する値を自動的に使用します。詳しくは、プロキシでのエミュレータの使用をご覧ください。

-netdelay delay

ネットワーク レイテンシ エミュレーションをミリ秒単位で次の delay 値のいずれかに設定します。

  • gsm - GSM / CSD(最小 150、最大 550)。
  • hscsd - HSCSD(最小 80、最大 400)。
  • gprs - GPRS(最小 35、最大 200)。
  • edge - EDGE / EGPRS(最小 80、最大 400)。
  • umts - UMTS / 3G(最小 35、最大 200)。
  • hsdpa - HSDPA(最小 0、最大 0)。
  • lte - LTE(最小 0、最大 0)。
  • evdo - EVDO(最小 0、最大 0)。
  • none - レイテンシなし、デフォルト(最小 0、最大 0)。
  • num - 正確なレイテンシを指定します。
  • min:max - 個々の最小および最大レイテンシを指定します。

次に例を示します。


emulator @Nexus_5X_API_23 -netdelay gsm

エミュレータは、ネットワーク スロットリング(ネットワーク シェーピングとも呼ばれる最大ネットワーク帯域幅の制限)やさらに大きな接続レイテンシをサポートします。スキン設定を使用するか、‑netspeed および -netdelay オプションを使用して定義できます。

-netfast ネットワーク スロットリングを無効にします。次に例を示します。


emulator @Nexus_5X_API_23 -netfast

このオプションは、-netspeed full -netdelay none を指定するのと同じです。これらは、このオプションのデフォルト値です。

-netspeed speed

ネットワーク速度のエミュレーションを設定します。次のいずれかの speed 値を kbps で指定して、ネットワークのアップロードとダウンロードの最大速度を指定します。

  • gsm - GSM / CSD(上り: 14.4、下り: 14.4)。
  • hscsd - HSCSD(上り: 14.4、下り: 57.6)。
  • gprs - GPRS(上り: 28.8、下り: 57.6)。
  • edge - EDGE / EGPRS(上り: 473.6、下り: 473.6)。
  • umts - UMTS / 3G(上り: 384.0、下り: 384.0)。
  • hsdpa - HSDPA(上り: 5,760.0、下り: 13,980.0)。
  • lte - LTE(上り: 58,000、下り: 173,000)。
  • evdo - EVDO(上り: 75,000、下り: 280,000)。
  • full - 制限なし、デフォルト(上り: 0.0、下り: 0.0)。
  • num - アップロード速度とダウンロード速度の両方を指定します。
  • up:down - アップロード速度とダウンロード速度を個々に指定します。

次に例を示します。


emulator @Nexus_5X_API_23 -netspeed edge

エミュレータは、ネットワーク スロットリング(ネットワーク シェーピングとも呼ばれる最大ネットワーク帯域幅の制限)やさらに大きな接続レイテンシをサポートします。 スキン設定を使用するか、‑netspeed および -netdelay オプションを使用して定義できます。

-port port コンソールと adb に使用される TCP ポート番号を設定します。次に例を示します。


emulator @Nexus_5X_API_23 -port 5556

マシンで実行される最初の仮想デバイス インスタンスのデフォルト値は 5554 です。通常、仮想デバイスは、コンソール ポートと adb ポートとして隣接したポートのペアを占有します。特定のマシンで実行されている最初の仮想デバイスのコンソールは、コンソール ポート 5554 と adb ポート 5555 を使用します。後続のインスタンスは、5556 / 5557、5558 / 5559 というように、2 ずつ増加するポート番号を使用します。範囲は 5554〜5682 で、64 個の仮想デバイスを同時に使用できます。

多くの場合、ポートの割り当ては -ports port,{port + 1} を指定するのと同じです。{port + 1} は解放されている必要があり、adb 用に予約されます。コンソールまたは adb ポートのいずれかがすでに使用されている場合、エミュレータは起動しません。‑port オプションは、仮想デバイスが使用しているポートとシリアル番号を報告し、指定した値に問題がある場合は警告します。エミュレータ UI では、コンソール ポート番号がウィンドウ タイトルに表示され、[Help] > [About] を選択することで、adb ポート番号を表示できます。

port 値が偶数ではなく、5554 から 5584 の範囲にある場合でも、仮想デバイスは起動します。ただし、さらに adb サーバーの起動がエミュレータの後であるときは、adb devices コマンドを使用しても仮想デバイスが表示されません。このため、偶数のコンソール ポート番号を使用することをおすすめします。

-ports
console-port,adb-port
コンソールと adb に使用される TCP ポートを設定します。次に例を示します。


emulator @Nexus_5X_API_23 -ports 5556,5559

有効なポート範囲は 5554〜5682 で、64 の仮想デバイスが同時に存在できます。-ports オプションは、エミュレータ インスタンスが使用しているポートとシリアル番号を報告し、指定した値に問題がある場合は警告します。

可能であれば、代わりに -port オプションを使用することをおすすめします。-ports オプションは、特別な設定が必要なネットワーク構成に使用できます。

コンソールおよび adb ポートの設定の詳細については、-port オプションをご覧ください。

-tcpdump filepath ネットワーク パケットをキャプチャし、ファイルに保存します。次に例を示します。


emulator @Nexus_5X_API_23 -tcpdump /path/dumpfile.cap

このオプションを使用して、エミュレータの仮想イーサネット LAN を介して送信されるすべてのネットワーク パケットのキャプチャを開始します。その後、Wireshark のようなツールを使用してトラフィックを分析できます。

このオプションはすべてのイーサネット パケットをキャプチャし、TCP 接続に限定されないことに注意してください。

システム
-accel mode エミュレータ VM アクセラレーションを設定します。次に例を示します。


emulator @Nexus_5X_API_23 -accel auto

エミュレーションのアクセラレーションは、x86 および x86_64 システム イメージでのみ機能します。Linux では、KVM に依存しています。Windows および Mac では、Intel CPU および Intel HAXM ドライバに依存しています。x86 または x86_64 デバイスをエミュレートしていない場合、このオプションは無視されます。

mode の有効な値は次のとおりです。

  • auto - アクセラレーションがサポートされているかどうかを自動的に判断し、可能な場合はそれを使用します(デフォルト)。
  • off - アクセラレーションを完全に無効にします。主にデバッグに有用です。
  • on - 強制アクセラレーション。KVM または HAXM がインストールされていないか使用できない場合、エミュレータは起動せず、エラー メッセージが出力されます。

詳細については、ハードウェア アクセラレーションの設定をご覧ください。

-accel-check エミュレータ VM アクセラレーションに必要なハイパーバイザー(HAXM または KVM)がインストールされているかどうかを確認します。次に例を示します。


emulator -accel-check

詳しくは、HAXM または KVM がインストールされているかの判断をご覧ください。

-engine engine

エミュレータ エンジンを指定します。

  • auto - エンジンを自動的に選択します(デフォルト)。
  • classic - 最新ではない QEMU 1 エンジンを使用します。
  • qemu2 - 新しい QEMU 2 エンジンを使用します。

次に例を示します。


emulator @Nexus_5X_API_23 -engine auto

通常、自動検出によって特定の AVD をエミュレートするときに最高のパフォーマンスを得られる値が選択されます。-engine オプションは、デバッグと比較が目的の場合のみ使用してください。

-gpu mode GPU エミュレーション モードを選択します。次に例を示します。


emulator @Nexus_5X_API_23 -gpu swiftshader_indirect

詳細については、コマンドラインでのグラフィック アクセラレーションの設定をご覧ください。

-no-accel x86 または x86_64 システム イメージを使用する場合は、エミュレータ VM アクセラレーションを無効にします。このオプションはデバッグのみに役立ち、-accel off を指定するのと同じです。次に例を示します。


emulator @Nexus_5X_API_23 -no-accel

詳細については、ハードウェア アクセラレーションの設定をご覧ください。

-nojni
-no-jni
Android Dalvik または ART ランタイムで拡張 Java Native Interface(JNI)チェックを無効にします。次に例を示します。


emulator @Nexus_5X_API_23 -nojni

仮想デバイスを起動すると、デフォルトで拡張 JNI チェックが有効になります。詳細については、JNI に関するヒントをご覧ください。

-selinux {disabled|permissive} Linux オペレーティング システムで Security-Enhanced Linux(SELinux)セキュリティ モジュールを disabled モードまたは permissive モードに設定します。次に例を示します。


me-linux$ emulator @Nexus_5X_API_23 -selinux permissive

デフォルトでは、SELinux は enforcing モードになっています。つまり、セキュリティ ポリシーが強制されます。permissive モードは SELinux ポリシーをロードしますが、強制はせず、ポリシー違反を記録するだけです。disabled モードは、SELinux のカーネル サポートを無効にします。

-timezone timezone

仮想デバイスのタイムゾーンを、ホストのタイムゾーンではなく timezone に設定します。次に例を示します。


emulator @Nexus_5X_API_23 -timezone Europe/Paris

エミュレータはデフォルトで開発用コンピュータのタイムゾーンを使用します。このオプションは異なるタイムゾーンを指定する場合や、自動検出が正しく機能しない場合に使用してください。timezone 値は zoneinfo 形式、つまり area/location または area/subarea/location の形式でなければなりません。次に例を示します。

  • America/Los_Angeles
  • Europe/Paris
  • America/Argentina/Buenos_Aires

指定されたタイムゾーンは zoneinfo データベースに存在する必要があります。

-version エミュレータのバージョン番号を表示します。次に例を示します。


emulator @Nexus_5X_API_23 -version

または


emulator -version
UI
-no-boot-anim 起動を高速化するには、エミュレータ起動中の起動アニメーションを無効にします。次に例を示します。


emulator @Nexus_5X_API_23 -no-boot-anim

低速のコンピュータでは、このオプションを使用すると、起動シーケンスを大幅に高速化できます。

-screen mode エミュレートするタッチ スクリーン モードを設定します。次に例を示します。


emulator @Nexus_5X_API_23 -screen no-touch

mode は次の値のいずれかです。

  • touch - タッチ スクリーンをエミュレートします(デフォルト)。
  • multi-touch - マルチタッチ スクリーンをエミュレートします。
  • no-touch - タッチ スクリーンおよびマルチタッチ スクリーンのエミュレーションを無効にします。

詳細オプション

次のコマンドライン起動オプションを使用できますが、一般的なアプリ デベロッパーは通常は使用しません。

以下の説明における作業ディレクトリとは、コマンドを入力しているターミナルの現在のディレクトリです。AVD システム ディレクトリとデータ ディレクトリ、およびそれらに格納されているファイルについては、デフォルトのディレクトリとファイルの理解をご覧ください。

これらのオプションには、外部アプリ デベロッパーに適しているものがあり、主にプラットフォーム デベロッパーが使用するオプションもあります。アプリ デベロッパーは Android アプリを作成し、特定の AVD で実行します。一方、プラットフォーム デベロッパーは外部のアプリ デベロッパーとは異なり、Android システムで作業し、AVD を事前に作成せずにエミュレータ内で実行する、内部の Android チームメンバーです。

高度なオプション 簡単な説明
-bootchart timeout

秒単位のタイムアウトを指定して、ブートチャートを有効にします。一部の Android システム イメージには、ブートチャート機能を統合する変更済みの init システムがあります。このオプションを使用すると、ブートチャートのタイムアウト期間をシステムに渡すことができます。init システムでブートチャートがアクティブになっていない場合、オプションは何もしません。このオプションは、外部アプリ デベロッパーではなく、主にプラットフォーム デベロッパーに役立ちます。

次に例を示します。


emulator @Nexus_5X_API_23 -bootchart 120
-cache filepath

キャッシュ パーティション イメージ ファイルを指定します。永続的なキャッシュ ファイルを設定するには、ファイル名に加え、絶対パスまたはデータ ディレクトリへの相対パスを指定します。ファイルが存在しない場合、エミュレータは空のファイルとして作成します。このオプションを使用しない場合、デフォルトで cache.img という名前の一時ファイルが使用されます。詳細については、AVD データ ディレクトリをご覧ください。

次に例を示します。


    emulator @Nexus_5X_API_23 -cache
       ~/.android/avd/Nexus_5X_API_23.avd/cache_persistent.img
    
-cache-size size

キャッシュ パーティション サイズを MB 単位で設定します。このオプションを指定しない場合、デフォルトは 66 MB です。通常、ほとんどのアプリ デベロッパーは、デフォルトのキャッシュを超える非常に大きなファイルをダウンロードする必要がない限り、このオプションを必要としません。キャッシュ ファイルの詳細については、AVD データ ディレクトリをご覧ください。

次に例を示します。


emulator @Nexus_5X_API_23 -cache-size 1000
-data filepath

ユーザーデータ パーティション イメージ ファイルを設定します。永続的なユーザーデータ ファイルを設定するには、ファイル名と、絶対パスまたは作業ディレクトリへの相対パスを指定します。ファイルが存在しない場合、エミュレータはデフォルトの userdata.img ファイルからイメージを作成して指定したファイル名で保存し、そのファイルにシャットダウン時にユーザーデータを保存します。このオプションを使用しない場合、デフォルトは userdata-qemu.img という名前のファイルです。ユーザーデータ ファイルの詳細については、AVD データ ディレクトリをご覧ください。

次に例を示します。


emulator @Nexus_5X_API_23 -data
       ~/.android/avd/Nexus_5X_API_23.avd/userdata-test.img
-datadir dir

絶対パスを使用してデータ ディレクトリを指定します。詳細については、AVD データ ディレクトリをご覧ください。

次に例を示します。


emulator @Nexus_5X_API_23 -datadir
       ~/.android/avd/Nexus_5X_API_23.avd/mytest
-force-32bit

64 ビット プラットフォームで 32 ビット エミュレータを使用します。このオプションは、テストまたはデバッグに役立つ場合があります。たとえば、エミュレータが 64 ビット Windows で実行できず、32 ビットでは実行できるという問題が過去にありましたが、この問題のデバッグの一環として比較を行う際にこのオプションが有効でした。以下に例を示します。


emulator @Nexus_5X_API_23 -force-32bit
-help-disk-images

ディスク イメージに関するヘルプを取得します。アプリとプラットフォームの両方のデベロッパーに関連する情報を提供します。次に例を示します。


emulator -help-disk-images
-help-char-devices

キャラクター device 仕様に関するヘルプを取得します。一部のエミュレータ オプションでは、device パラメータが必要です。次に例を示します。


emulator -help-char-devices
-help-sdk-images

アプリ デベロッパーに関連するディスク イメージに関するヘルプを取得します。SDK ツールで作成された AVD のイメージ ファイルの場所を説明しています。次に例を示します。


emulator -help-sdk-images
-help-build-images

プラットフォーム デベロッパーに必要なディスク イメージに関するヘルプを取得します。次に例を示します。


emulator -help-build-images
-initdata filepath
-init-data filepath

データ パーティションの初期バージョンを指定します。ユーザーデータをワイプした後、エミュレータはデフォルトの userdata.img を初期バージョンとして使用する代わりに、指定されたファイルのコンテンツをユーザーデータ(デフォルトでは、userdata-qemu.img ファイル)にコピーします。ファイル名と、絶対パスまたは作業ディレクトリへの相対パスを指定します。パスを指定しない場合、ファイルはシステム ディレクトリに配置されます。詳細については、AVD システム ディレクトリをご覧ください。

次に例を示します。


emulator @Nexus_5X_API_23 -initdata
       ~/Library/Android/sdk/system-images/android-23/
       google_apis/x86/userdata-test.img
-kernel filepath

特定のエミュレートされたカーネルを使用します。パスを指定しない場合、エミュレータはシステム ディレクトリを検索します。このオプションを指定しない場合、デフォルトで kernel-ranchu が使用されます。詳細については、AVD システム ディレクトリをご覧ください。カーネル デバッグ メッセージを表示するには、‑show‑kernel オプションを使用します。

次に例を示します。


    emulator @Nexus_5X_API_23 -kernel
       ~/Library/Android/sdk/system-images/android-23/
       google_apis/x86/kernel-test.img -show-kernel
-noaudio
-no-audio

この仮想デバイスのオーディオ サポートを無効にします。一部の Linux および Windows コンピュータには、エミュレータの起動を妨げるなど、さまざまな障害を引き起こすオーディオ ドライバの不良があります。この場合、このオプションを使用して問題を解決できます。このオプションの代わりに、QEMU_AUDIO_DRV 環境変数を使用して、オーディオ バックエンドを変更することも可能です。

次に例を示します。


emulator @Nexus_5X_API_23 -noaudio
-nocache
-no-cache

キャッシュ パーティションなしでエミュレータを起動します。このオプションを使用しない場合、デフォルトで cache.img という名前の一時ファイルがキャッシュ パーティションとして使用されます。このオプションは、プラットフォーム デベロッパー専用です。詳細については、AVD データ ディレクトリをご覧ください。

次に例を示します。


emulator @Nexus_5X_API_23 -nocache
-no-snapshot

自動読み込みと保存の両オペレーションを禁止し、エミュレータが完全なブート シーケンスを実行してから閉じたときにエミュレータの状態が失われるようにします。-snapshot オプションをオーバーライドします。

次に例を示します。


emulator @Nexus_5X_API_23 -no-snapshot
-no-snapshot-load

エミュレータがスナップショット ストレージから AVD 状態を読み込まないようにし、フルブートを実行します。

次に例を示します。


emulator @Nexus_5X_API_23 -no-snapshot-load
-no-snapshot-save

エミュレータが終了時に AVD 状態をスナップショット ストレージに保存しないようにします。つまり、すべての変更が失われます。

次に例を示します。


emulator @Nexus_5X_API_23 -no-snapshot-save
-no-snapshot-update-time

スナップショットの復元後すぐに AVD クロック時刻の修正を試みないようにします。このオプションは、急激な時刻補正を回避するため、テスト時に役立ちます。なお、時間の更新は約 15 秒ごとに AVD に送信されます。

次に例を示します。


emulator @Nexus_5X_API_23 -no-snapshot-update-time
-no-snapstorage

状態スナップショットを保存またはロードするためのファイルをマウントせずにエミュレータを起動して、フルブートを強制し、状態スナップショット機能を無効にします。このオプションは、-snapstorage および -snapshot オプションをオーバーライドします。

次に例を示します。


emulator @Nexus_5X_API_23 -no-snapstorage
-no-window

エミュレータのグラフィカル ウィンドウ表示を無効にします。このオプションは、ディスプレイのないサーバーでエミュレータを実行するときに役立ちます。その場合も、adb またはコンソールを介してエミュレータにアクセスできます。次に例を示します。


emulator @Nexus_5X_API_23 -no-window
-partition-size size

システムデータ パーティション サイズを MB 単位で指定します。次に例を示します。


emulator @Nexus_5X_API_23 -partition-size 1024
-prop name=value

エミュレータの起動時に Android システム プロパティを設定します。 name は、スペースを含まない最大 32 文字のプロパティ名である必要があり、value は最大 92 文字の文字列である必要があります。1 つのコマンドラインで複数の ‑prop オプションを指定できます。このオプションはデバッグに役立ちます。次に例を示します。


    emulator @Nexus_5X_API_23 -prop status.battery.level_raw=80
       -prop ro.serialno=123456
    
-qemu args 引数を QEMU エミュレータ ソフトウェアに渡します。QEMU 1 と QEMU 2 では使用できる引数が異なることに注意してください。このオプションは、必ず最後に指定するようにしてください。このオプション以降のすべてのオプションは QEMU 固有のオプションとして解釈されます。このオプションは非常に高度であり、QEMU および Android エミュレーションに精通しているデベロッパー以外は使用しないようにしてください。
-qemu -h

-qemu ヘルプを表示します。次に例を示します。


emulator -qemu -h
-ramdisk filepath

RAM ディスク ブートイメージを指定します。ファイル名と、絶対パスまたは作業ディレクトリへの相対パスを指定します。このオプションを使用しない場合、デフォルトでシステム ディレクトリの ramdisk.img ファイルが使用されます。詳細については、AVD システム ディレクトリをご覧ください。

次に例を示します。


emulator @Nexus_5X_API_23 -ramdisk
       ~/Library/Android/sdk/system-images/android-23/
       google_apis/x86/ramdisk-test.img
-report-console socket

エミュレーションを開始する前に、コンソール ポートをリモートのサードパーティに報告します。自動化されたテスト スクリプトに役立ちます。 socket は次の形式のいずれかを使用する必要があります。

  • tcp:port[,server][,max=seconds][,ipv6]
  • unix:port[,server][,max=seconds][,ipv6]

詳細については、特定のオプションの詳細なヘルプの取得で説明されている -help-report-console オプションを使用してください。

-shell

現在のターミナルでルートシェル コンソールを作成します。次の点で adb shell コマンドと異なります。

  • システムの多くの部分を変更できるルートシェルを作成します。
  • エミュレートされたシステムの adb デーモンが壊れていても機能します。
  • Ctrl+C(⌘C)を押すと、シェルではなくエミュレータが停止します。

次に例を示します。


emulator @Nexus_5X_API_23 -shell
-snapshot name

自動開始および保存オペレーション用スナップショット ストレージ ファイル内のスナップショットの名前を指定します。エミュレータは、完全なブート シーケンスを実行する代わりに、以前の状態のスナップショットから実行を再開できます。これにより通常はかなり高速になります。このオプションを指定すると、エミュレータはスナップショット イメージからその名前のスナップショットをロードし、終了時に同じ名前で保存します。このオプションを使用しない場合、デフォルトで完全なブート シーケンスが実行されます。指定されたスナップショットが存在しない場合、エミュレータは代わりに完全なブートシーケンスを実行し、保存オペレーションを行います。

スナップショット ストレージ ファイルとデフォルト ファイルの指定については、-snapstorage オプションをご覧ください。


    emulator @Nexus_5X_API_23 -snapshot snapshot2
    

スナップショットを読み込むプロセスでは、システムのすべてのコンテンツ、ユーザーデータ、SD カードイメージが、スナップショットが作成されたときに保持していたコンテンツで上書きされることに注意することが重要です。この情報を別のスナップショットに保存しない限り、それ以降の変更は失われます。

avd snapshot save name コマンドを使用して、エミュレータ コンソールからスナップショットを作成することもできます。詳細については、エミュレータ コンソール コマンドを仮想デバイスに送信するをご覧ください。

-snapshot-list

利用可能なスナップショットのリストを表示します。エミュレータの起動に使用されたスナップショット ストレージファイルに保存されているスナップショットの表を出力し、終了します。-snapstorage file も指定した場合、このコマンドはファイルに保存されているスナップショットの表を出力します。

次に例を示します。


    emulator @Nexus_5X_API_23 -snapshot-list -snapstorage
       ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img
    

出力の ID および TAG 列の値を -snapshot オプションの引数として使用できます。

-snapstorage filepath

すべての状態スナップショットを含むリポジトリ ファイルを指定します。実行中に作成されたすべてのスナップショットはこのファイルに保存され、このファイル内のスナップショットのみがエミュレータの実行中に復元できます。このオプションを指定しない場合、デフォルトでデータ ディレクトリの snapshots.img が使用されます。指定されたファイルが存在しない場合、エミュレータは起動しますが、状態スナップショットの保存または読み込みはサポートされません。

次に例を示します。


    emulator @Nexus_5X_API_23 -snapstorage
       ~/.android/avd/Nexus_5X_API_23.avd/snapshots-test.img
    
-sysdir dir

絶対パスを使用してシステム ディレクトリを指定します。詳細については、AVD システム ディレクトリをご覧ください。次に例を示します。


emulator @Nexus_5X_API_23 -sysdir
       ~/Library/Android/sdk/system-images/android-23/
       google_apis/x86/test
-system filepath

初期システム ファイルを指定します。ファイル名と、絶対パスまたは作業ディレクトリへの相対パスを指定します。このオプションを使用しない場合、デフォルトでシステム ディレクトリの system.img ファイルが使用されます。詳細については、AVD システム ディレクトリをご覧ください。次に例を示します。


emulator @Nexus_5X_API_23 -system
       ~/Library/Android/sdk/system-images/android-23/
       google_apis/x86/system-test.img
-use-system-libs

Linux において、エミュレータ システムにバンドルされているバージョンではなく、libstdc++ システムを使用します。このオプションは、エミュレータが正常に起動しない場合にのみ使用してください。ただし、常に機能するとは限りません。別の方法として、ANDROID_EMULATOR_USE_SYSTEM_LIBS 環境変数を 1 に設定します。

次に例を示します。


me-linux$ emulator @Nexus_5X_API_23 -use-system-libs
-writable-system

エミュレーション セッション中に書き込み可能なシステム イメージを作成する際にこのオプションを使用します。方法は次のとおりです。

  1. -writable-system オプションを使用して仮想デバイスを起動します。
  2. コマンド ターミナルから adb remount コマンドを入力して、エミュレータに system/ を読み取り可能かつ書き込み可能として再マウントするように指示します(デフォルトでは読み取り専用としてマウントされます)。

このフラグを使用すると、システム イメージの一時的なコピーが作成されることに注意してください。このコピーは非常に大きく(数百 MB)なりますが、エミュレータが終了すると破棄されます。

サポートが終了したオプション

次のコマンドライン オプションはサポートが終了しています。

  • -audio-in
  • -audio-out
  • -charmap
  • -code-profile
  • -cpu-delay
  • -dpi-device
  • -dynamic_skin
  • -enable-kvm
  • -gps
  • -image
  • -keyset
  • -help-keys
  • -help-keyset-file
  • -nand-limits
  • -noskin
  • -no-skin
  • -onion
  • -onion-alpha
  • -onion-rotation
  • -radio
  • -ranchu
  • -raw-keys
  • -scale
  • -shared-net-id
  • -shell-serial
  • -skin
  • -skindir
  • -trace
  • -useaudio

コマンドライン オプションに関するヘルプの取得

このセクションでは、コマンドライン オプションに関するヘルプを取得する方法について説明します。次のセクションでは、エミュレータを起動するときに使用できる、一般的なエミュレータのコマンドライン オプションに関する詳細情報を示します。

すべてのエミュレータ オプションのリスト

簡単な説明を含むすべてのエミュレータ オプションのリストを出力するには、次のコマンドを入力します。

emulator -help
    

特定のオプションの詳細なヘルプの取得

特定のスタートアップ オプションのヘルプを出力するには、次のコマンドを入力します。

emulator -help-option
    

次に例を示します。

emulator -help-netspeed
    

このヘルプは、-help オプションで提供される説明よりも詳細です。

すべてのオプションの詳細なヘルプの取得

すべてのエミュレータ オプションの詳細なヘルプを表示するには、次のコマンドを入力します。

emulator -help-all
    

エミュレータ環境変数のリスト

エミュレータ環境変数のリストを取得するには、次のコマンドを入力します。

emulator -help-environment
    

環境変数の設定は、仮想デバイスを起動する前にターミナル ウィンドウで行うか、オペレーティング システムのユーザー設定(Linux の .bashrc ファイル内など)で行うことができます。

デバッグタグのリスト

-debug オプションのタグのリストを出力するには、次のコマンドを入力します。

emulator -help-debug-tags
    

-debug オプションを使用すると、タグで指定された特定のエミュレータ コンポーネントからのデバッグ メッセージを有効または無効にできます。