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

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

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

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 Pixel8_API_34 -netdelay none -netspeed full -qt-hide-window -grpc-use-token -idle-grpc-timeout

なお、引数 -qt-hide-window -grpc-use-token -idle-grpc-timeout は、Android Studio 内のエミュレータ ウィンドウを実行するためにのみ使用されます。エミュレータを専用のウィンドウで実行する場合は、これらの追加パラメータを使用しないでください。

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

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. エミュレータでアプリを実行してテストします。
    エミュレータの実行中に、必要に応じてエミュレータ コンソールを使用してコマンドを発行できます。

アプリをアンインストールする方法は、Android デバイスでの通常の方法と同じです。

仮想デバイスは、再起動後もユーザーデータ ディスク パーティション(userdata-qemu.img)にアプリとその状態データを保持します。このデータをクリアするには、-wipe-data オプション付きでエミュレータを起動するか、AVD Manager でデータを消去します。ユーザーデータ パーティションとその他のストレージの詳細については、次のセクションをご覧ください。

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

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

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

Android Emulator は(QEMU)ハイパーバイザを使用します。

AVD システム ディレクトリ

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

  • macOS と Linux - ~/Library/Android/sdk/system-images/android-apiLevel/variant/arch/
  • Windows - C:\Users\user\Library\Android\sdk\system-images\android-apiLevel\variant\arch\

ここで:

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

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

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

表 1. Android Emulator によって読み取られるシステム ディレクトリ ファイル

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

AVD データ ディレクトリ

AVD データ ディレクトリ(コンテンツ ディレクトリとも呼ばれます)は、単一の AVD インスタンス専用のディレクトリであり、AVD のすべての変更可能データを格納します。

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

  • macOS と Linux - ~/.android/avd/name.avd/
  • Windows 10 以降 - C:\Users\user\.android\name.avd\

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

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

表 2. 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 カード ファイルがオーバーライドされます。 この SD カード オプションは、Apple Silicon を搭載した Mac では動作しません。

仮想デバイスの実行中、エミュレータ 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 にアクセスしてください。

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

頻繁に使用されるコマンドライン起動オプションを次の表に示します。

表 3: よく使用されるコマンドライン オプション

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

mode には次のいずれかの値を指定できます。

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

次に例を示します。

emulator @Pixel8_API_34 -camera-back webcam0
-webcam-list エミュレーションに使用できる開発用コンピュータ上のウェブカメラのリストを指定します。次に例を示します。
emulator @Pixel8_API_34 -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

物理 RAM サイズを 1,536 ~ 8,192 MB の範囲で指定します。例:

emulator @Pixel8_API_34 -memory 2048

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

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

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

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

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

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

emulator @Pixel8_API_34 -wipe-data

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

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

$ emulator @Pixel8_API_34 -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 socket,gles

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

emulator @Pixel8_API_34 -debug-all -debug-no-metrics

タグの一覧を表示するには、emulator -help-debug-tags コマンドを使用します。

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

emulator @Pixel8_API_34 -logcat *:e

logtags では、adb logcat logtags コマンドと同じ形式を使用します。詳細情報を表示するには adb logcat -help を入力します。つまり、スペースまたはカンマで区切られた componentName:logLevel という形式のログフィルタのリストです。componentName は、ワイルドカードのアスタリスク(*)またはコンポーネント名(ActivityManagerSystemServerInputManagerWindowManagerなど)です。

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

  • v - 詳細
  • d - デバッグ
  • i - 情報
  • w - 警告ログレベル
  • e - エラー
  • s - 出力なし

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

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

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

Logcat と adb の詳細については、Logcat コマンドライン ツールLogcat を使用したログの表示と書き込みLog クラス、adb コマンドの発行をご覧ください。

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

emulator @Pixel8_API_34 -show-kernel

このオプションの用途の一つは、起動プロセスが正常に機能するかどうかをチェックすることです。

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

emulator @Pixel8_API_34 -verbose

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

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

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

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

emulator @Pixel8_API_34 -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 @Pixel8_API_34 -netdelay gsm

エミュレータはネットワーク スロットリングと、さらに大きな接続レイテンシをサポートします。これは、スキン構成を使用するか、‑netspeed および -netdelay オプションを使用して定義できます。

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

emulator @Pixel8_API_34 -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 @Pixel8_API_34 -netspeed edge

エミュレータはネットワーク スロットリングと、さらに大きな接続レイテンシをサポートします。これは、スキン構成を使用するか、‑netspeed および -netdelay オプションを使用して定義できます。

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

emulator @Pixel8_API_34 -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 では、コンソール ポート番号がウィンドウ タイトルに表示され、[Help] > [About] を選択することで adb ポート番号を表示できます。

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

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

emulator @Pixel8_API_34 -ports 5556,5559

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

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

コンソール ポートと adb ポートの設定の詳細については、-port オプションを参照してください。

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

emulator @Pixel8_API_34 -tcpdump /path/dumpfile.cap

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

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

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

emulator @Pixel8_API_34 -accel auto

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

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

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

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

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

emulator -accel-check

詳細については、ハイパーバイザがインストールされているかどうかを確認するをご覧ください。

-engine engine

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

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

次に例を示します。

emulator @Pixel8_API_34 -engine auto

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

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

emulator @Pixel8_API_34 -gpu swiftshader_indirect

詳しくは、グラフィック アクセラレーションを設定するをご覧ください。

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

emulator @Pixel8_API_34 -no-accel

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

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

emulator @Pixel8_API_34 -nojni

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

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

me-linux$ emulator @Pixel8_API_34 -selinux permissive

デフォルトでは、SELinux は enforcing モードになっており、セキュリティ ポリシーを強制適用します。permissive モードでは SELinux ポリシーを読み込みますが、強制しません。このオプションでは、ポリシー違反をログに記録するだけです。disabled モードでは、SELinux のカーネル サポートが無効になります。

-timezone timezone

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

emulator @Pixel8_API_34 -timezone Europe/Paris

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

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

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

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

emulator @Pixel8_API_34 -version

または

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

emulator @Pixel8_API_34 -no-boot-anim

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

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

emulator @Pixel8_API_34 -screen no-touch

mode には次のいずれかの値を指定できます。

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

高度なオプション

次の表は、利用可能なものの、一般的なアプリ デベロッパーはあまり使用することがないコマンドライン起動オプションをまとめたものです。

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

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

表 4. 高度なコマンドライン オプション

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

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

次に例を示します。

emulator @Pixel8_API_34 -bootchart 120
-cache filepath

キャッシュ パーティション イメージ ファイルを指定します。永続的なキャッシュ ファイルをセットアップするには、ファイル名に加え、絶対パスまたはデータ ディレクトリへの相対パスを指定します。ファイルが存在しない場合、エミュレータは空のファイルとして作成します。

次に例を示します。

emulator @Pixel8_API_34 -cache
   ~/.android/avd/Pixel8_API_34.avd/cache_persistent.img

このオプションを使用しない場合、デフォルトは cache.img という名前の一時ファイルになります。詳細については、AVD データ ディレクトリをご覧ください。

-cache-size size

キャッシュ パーティション サイズを MB 単位で設定します。

次に例を示します。

emulator @Pixel8_API_34 -cache-size 1000

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

-data filepath

ユーザーデータ パーティション イメージ ファイルを設定します。永続的なユーザーデータ ファイルをセットアップするには、ファイル名と、絶対パスまたは作業ディレクトリへの相対パスを指定します。ファイルが存在しない場合、エミュレータはデフォルトの userdata.img ファイルからイメージを作成し、指定されたファイル名で格納して、シャットダウン時にはユーザーデータをそのファイルで保持します。

次に例を示します。

emulator @Pixel8_API_34 -data
   ~/.android/avd/Pixel8_API_34.avd/userdata-test.img

このオプションを使用しない場合、デフォルトは userdata-qemu.img という名前のファイルになります。 ユーザーデータ ファイルの詳細については、AVD データ ディレクトリをご覧ください。

-datadir dir

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

次に例を示します。

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

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

emulator @Pixel8_API_34 -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 ファイル)にコピーします。ファイル名と、絶対パスまたは作業ディレクトリへの相対パスを指定します。

次に例を示します。

emulator @Pixel8_API_34 -initdata
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/userdata-test.img

パスを指定しない場合、ファイルはシステム ディレクトリに配置されます。詳細については、AVD システム ディレクトリをご覧ください。

-kernel filepath

特定のエミュレートされたカーネルを使用します。パスを指定しない場合、エミュレータはシステム ディレクトリを検索します。

カーネル デバッグ メッセージを表示するには、‑show‑kernel オプションを使用します。

次に例を示します。

emulator @Pixel8_API_34 -kernel
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/kernel-test.img -show-kernel

このオプションを指定しない場合、デフォルトは kernel-ranchu になります。詳細については、AVD システム ディレクトリをご覧ください。

-noaudio
-no-audio

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

次に例を示します。

emulator @Pixel8_API_34 -noaudio
-nocache
-no-cache

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

次に例を示します。

emulator @Pixel8_API_34 -nocache
-no-snapshot

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

次に例を示します。

emulator @Pixel8_API_34 -no-snapshot
-no-snapshot-load

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

次に例を示します。

emulator @Pixel8_API_34 -no-snapshot-load
-no-snapshot-save

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

次に例を示します。

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

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

次に例を示します。

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

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

次に例を示します。

emulator @Pixel8_API_34 -no-snapstorage
-no-window

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

emulator @Pixel8_API_34 -no-window
-partition-size size

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

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

エミュレータの起動時に Android システム プロパティを設定します。name には、qemu_prop としてラベル付けされるスペースを含まない 32 文字以下のプロパティ名を指定する必要があります。value には、92 文字以下の文字列を指定する必要があります。例については、property_contexts ファイルをご覧ください。1 つのコマンドラインで複数の ‑prop オプションを指定できます。このオプションはデバッグに役立ちます。 次に例を示します。

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

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

emulator -qemu -h
-ramdisk filepath

RAM ディスク ブートイメージを指定します。ファイル名と、絶対パスまたは作業ディレクトリへの相対パスを指定します。

次に例を示します。

emulator @Pixel8_API_34 -ramdisk
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/ramdisk-test.img

このオプションを使用しない場合、デフォルトはシステム ディレクトリの ramdisk.img ファイルになります。詳細については、AVD システム ディレクトリをご覧ください。

-report-console socket

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

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

詳細を確認するには、特定のオプションに関するヘルプのセクションで説明されている -help-report-console オプションを使用してください。

-shell

現在のターミナルで root シェル コンソールを作成します。このオプションは、次の点で adb shell コマンドと異なります。

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

次に例を示します。

emulator @Pixel8_API_34 -shell
-snapshot name

自動開始および保存オペレーション用スナップショット ストレージ ファイル内のスナップショットの名前を指定します。

エミュレータは、完全なブート シーケンスを実行する代わりに、以前の状態のスナップショットから実行を再開できます。これにより通常はかなり高速になります。このオプションを指定すると、エミュレータはスナップショット イメージからその名前のスナップショットをロードし、終了時に同じ名前で保存します。

このオプションを使用しない場合、デフォルトで完全なブート シーケンスが実行されます。指定されたスナップショットが存在しない場合、エミュレータは代わりに完全なブート シーケンスを実行し、保存オペレーションを行います。

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

emulator @Pixel8_API_34 -snapshot snapshot2

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

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

-snapshot-list

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

次に例を示します。

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

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

-snapstorage filepath

すべての状態スナップショットを含むリポジトリ ファイルを指定します。実行中に作成されたすべてのスナップショットはこのファイルに保存されます。このファイル内のスナップショットのみがエミュレータの実行中に復元できます。

次に例を示します。

emulator @Pixel8_API_34 -snapstorage
   ~/.android/avd/Pixel8_API_34.avd/snapshots-test.img

このオプションを指定しない場合、デフォルトはデータ ディレクトリの snapshots.img になります。指定されたファイルが存在しない場合、エミュレータは起動しますが、状態スナップショットの保存または読み込みはサポートされません。

-sysdir dir

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

emulator @Pixel8_API_34 -sysdir
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/test
-system filepath

初期システム ファイルを指定します。ファイル名と、絶対パスまたは作業ディレクトリへの相対パスを指定します。

次に例を示します。

emulator @Pixel8_API_34 -system
   ~/Library/Android/sdk/system-images/android-34/
   google_apis/x86_64/system-test.img

このオプションを使用しない場合、デフォルトはシステム ディレクトリの system.img ファイルになります。詳細については、AVD システム ディレクトリをご覧ください。

-use-system-libs

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

次に例を示します。

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