6 月 3 日の「#Android11: The Beta Launch Show」にぜひご参加ください。

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

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

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

エミュレータはいくつかの関連するファイルを使用しますが、AVD システム ディレクトリと 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 プレビューを示します。リリース時には API レベル 23 になり、android-23 で表されます。
  • variant は、システム イメージによって実装される特定の機能に対応する名前です(例: google_apis または android-wear)。
  • arch は、ターゲット CPU アーキテクチャです(例: x86)。

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

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

ファイル 説明 別のファイルを指定するオプション
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\

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

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

ファイル 説明 別のファイルを指定するオプション
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 警告を返します。

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

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


emulator @Nexus_5X_API_23 -wipe-data

デフォルトでは、ユーザーデータ ファイルは userdata-qemu.img で、初期データファイルは userdata.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 - 詳細
  • d - デバッグ
  • i - 情報
  • w - 警告ログレベル
  • e - エラー
  • s - 出力なし

次の例では、情報ログレベルで 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 サーバーの別のリストを指定するには、-dns-server オプションを使用します。

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


emulator @Nexus_5X_API_23 -http-proxy myserver:1981

proxy には次のいずれか 1 つを指定できます。
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(アップロード: 5760.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 を使用します。後続のインスタンスは、2 つずつ増えるポート番号を使用します(5556 と 5557、5558 と 5559、以下同様)。範囲は 5554~5682 で、64 個の仮想デバイスを同時に使用できます。

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

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