仮想デバイスを作成して管理する

Android Virtual Device(AVD)では、Android スマートフォンやタブレット、Wear OS、Android TV、Automotive OS デバイスなど、Android Emulator でシミュレートするデバイスの特性を定義できます。デバイス マネージャーは Android Studio から起動できるツールであり、AVD の作成と管理に役立ちます。

新しいデバイス マネージャーを開くには、次のいずれかの手順を行います。

  • Android Studio のウェルカム画面で、[More Actions] > [Virtual Device Manager] を選択します。

ウェルカム画面からデバイス マネージャーを開く

  • プロジェクトを開いたら、メインメニュー バーで [View] > [Tool Windows] > [Device Manager] を選択し、[Create device] をクリックします。

新しいデバイス マネージャー ウィンドウ

仮想デバイスを使用して、自動のインストルメンテーション テストをスケーラブルなセルフマネージド方式で実行する場合は、Gradle で管理されているデバイスの使用を検討してください。

AVD について

AVD には、ハードウェア プロファイル、システム イメージ、ストレージ領域、スキンなどのプロパティが含まれています。

マニフェストの <uses-sdk> 設定に基づいて、アプリがサポートする可能性がある各システム イメージごとに AVD を作成することをおすすめします。

ハードウェア プロファイル

ハードウェア プロファイルは工場出荷時のデバイスの特性を定義します。デバイス マネージャーには Google Pixel デバイスなどの特定のハードウェア プロファイルがプリロードされていますが、必要に応じてハードウェア プロファイルの定義またはカスタマイズを行えます。

[Select Hardware] ダイアログ

[Play Store] 列に Google Play ロゴのラベルが付いているデバイス定義には、Google Play ストア アプリと、Google Play 開発者サービスへのアクセスの両方が含まれており、[Extended controls] ダイアログの [Google Play] タブには、デバイスの Google Play 開発者サービスをアップデートできる便利なボタンもあります。

このロゴが付いたデバイスとデバイスの種類が「スマートフォン」のデバイスも、CTS を遵守しており、Google Play ストア アプリを含むシステム イメージを使用できる場合があります。

システム イメージ

[Google API] というラベルの付いたシステム イメージには、Google Play 開発者サービスへのアクセスが含まれています。

[System Image] ダイアログ

[Recommended] タブには推奨されるシステム イメージが一覧表示されます。他のタブには、より包括的なリストが表示されます。右ペインには、選択したシステム イメージが表示されます。

システム イメージの横にダウンロード アイコンが表示される場合、現在そのイメージは開発マシンにインストールされていません。このアイコンをクリックすると、システム イメージをダウンロードできます。システム イメージをダウンロードするには、インターネット接続が必要です。

対象デバイスの API レベルは重要です。アプリが必要とする API レベル(アプリ マニフェスト ファイルの minSdk 属性で指定されているレベル)より低い API レベルのシステム イメージでは、アプリが動作しないからです。システムの API レベルと minSdk の関係については、アプリのバージョニングをご覧ください。

アプリのマニフェスト ファイルで <uses-library> 要素を宣言している場合、その外部ライブラリを含むシステム イメージがアプリに必要です。エミュレータでアプリを実行するには、必要なライブラリを含む AVD を作成します。そのためには、Google マップのライブラリを含む Google API のアドオンなど、AVD プラットフォーム用のアドオン コンポーネントを使用しなければならないことがあります。

アプリのセキュリティを確保し、実際のデバイスと同じように動作できるようにするため、Google Play ストアを含むシステム イメージはリリースキーで署名されています。つまり、それらのイメージでは、昇格された権限(root)を取得できません。

アプリのトラブルシューティングに昇格された権限(root)が必要な場合は、Google のアプリやサービスが含まれていない Android オープンソース プロジェクト(AOSP)のシステム イメージを使用できます。そうすれば、adb root コマンドと adb unroot コマンドを使用して、標準の権限と昇格された権限を切り替えることができます。

  % adb shell
  emu64a:/ $
  emu64a:/ $ exit
  % adb root
  restarting adbd as root
  % adb shell
  emu64a:/ #
  emu64a:/ # exit
  % adb unroot
  restarting adbd as non root
  % adb shell
  emu64a:/ $
  emu64a:/ $ exit
  %
  

ストレージ領域

AVD は開発マシン上に専用のストレージ領域を確保します。インストールしたアプリや設定内容、エミュレートされた SD カードなどのデバイスのユーザーデータは、そのストレージ領域に保存されます。必要に応じて、デバイス マネージャーを使用してユーザーデータを消去し、デバイス内のデータを新品と同じ状態に戻せます。

スキン

エミュレータ スキンはデバイスの外観を決めるものです。デバイス マネージャーには、あらかじめスキンがいくつか用意されています。また、自身で定義したスキンやサードパーティから提供されたスキンを使用することもできます。

AVD とアプリの機能

AVD 定義に、アプリが依存しているデバイス機能が含まれていることを確認してください。 AVD で定義できる機能のリストについては、ハードウェア プロファイルのプロパティAVD プロパティをご覧ください。

AVD を作成する

AVD を新規作成するには:

  1. デバイス マネージャーを開きます。
  2. [Create Device] をクリックします。

    [Select Hardware] ウィンドウが表示されます。

    一部のハードウェア プロファイルにのみ、Play ストアが含まれています。これらのプロファイルは CTS に完全に対応しており、Play ストア アプリを含むシステム イメージを使用できます。

  3. ハードウェア プロファイルを選択して [Next] をクリックします。

    使用したいハードウェア プロファイルがない場合は、ハードウェア プロファイルを作成またはインポートできます。手順については、このページの別のセクションをご覧ください。

    [System Image] ウィンドウが表示されます。

  4. 特定の API レベル用のシステム イメージを選択して [Next] をクリックします。
  5. [Verify Configuration] ウィンドウが表示されます。

  6. 必要に応じて AVD プロパティを変更し、[Finish] をクリックします。

    スキンなどの詳細設定を確認するには、[Show Advanced Settings] をクリックします。

  7. デバイス マネージャーの [Virtual] タブと対象デバイスのメニューに、新しい AVD が表示されます。

コピーから AVD を作成するには:

  1. デバイス マネージャーの [Virtual] タブで、メニュー アイコン をクリックして [Duplicate] を選択します。

    [Verify Configuration] ウィンドウが表示されます。

  2. [System Image] ウィンドウまたは [Select Hardware] ウィンドウで変更を行う必要がある場合は、[Previous] をクリックします。
  3. 必要な変更を行った後、[Finish] をクリックします。

    デバイス マネージャーの [Virtual] タブに、AVD が表示されます。

ハードウェア プロファイルを作成する

デバイス マネージャーには一般的なデバイスのハードウェア プロファイルがあらかじめ定義されており、それらを簡単に自身の AVD 定義に追加できます。異なるデバイスを定義する必要がある場合は、新しいハードウェア プロファイルを作成できます。

新しいハードウェア プロファイルを一から作成することも、ハードウェア プロファイルをコピーしてそれを元に作成することもできます。なお、プリロード済みのハードウェア プロファイルは編集できません。

ハードウェア プロファイルを一から作成するには:

  1. [Select Hardware] ウィンドウで、[New Hardware Profile] をクリックします。
  2. [Configure Hardware Profile] ウィンドウで、必要に応じてハードウェア プロファイルのプロパティを変更します。

    [Configure Hardware Profile] ダイアログ
  3. [Finish] をクリックします。

    [Select Hardware] ウィンドウに、新しいハードウェア プロファイルが表示されます。ハードウェア プロファイルを使用する AVD を作成するには、[Next] をクリックするか、[Cancel] をクリックして [Virtual] タブまたは対象デバイスのメニューに戻ります。

ハードウェア プロファイルをコピーから作成するには:

  1. [Select Hardware] ウィンドウでハードウェア プロファイルを選択し、[Clone Device] をクリックするか、ハードウェア プロファイルを右クリックして [Clone] を選択します。

  2. [Configure Hardware Profile] ウィンドウで、必要に応じてハードウェア プロファイルのプロパティを変更します。
  3. [Finish] をクリックします。
  4. [Select Hardware] ウィンドウに、新しいハードウェア プロファイルが表示されます。ハードウェア プロファイルを使用する AVD を作成するには、[Next] をクリックするか、[Cancel] をクリックして [Virtual] タブまたは対象デバイスのメニューに戻ります。

既存の AVD を編集する

デバイス マネージャーの [Virtual] タブで、AVD に対して以下の操作を行うことができます。

  • AVD の編集。Edit this AVD アイコン をクリックして変更を加えます。
  • AVD の削除。メニュー アイコン をクリックして [Delete] を選択します。
  • ディスク上の関連する AVD の INI ファイルと IMG ファイルの表示。メニュー アイコン をクリックして [Show on Disk] を選択します。
  • AVD 構成の詳細情報の表示。この情報を Android Studio チームへのバグレポートに記載できます。メニュー アイコン をクリックして [View Details] を選択します。

既存のハードウェア プロファイルを編集する

プリロードされているハードウェア プロファイルを編集または削除することはできませんが、それ以外のハードウェア プロファイルについては、[Select Hardware] ウィンドウで以下の操作を行うことができます。

  • ハードウェア プロファイルの編集。ハードウェア プロファイルを選択して [Edit Device] をクリックします。または、ハードウェア プロファイルを右クリックして [Edit] を選択します。次に、変更を加えます。
  • ハードウェア プロファイルの削除。ハードウェア プロファイルを右クリックして [Delete] を選択します。

エミュレータの実行と停止、データの消去を行う

[Virtual] タブで、エミュレータに対して以下の操作を行うことができます。

  • AVD を使用するエミュレータの実行。Launch アイコン をクリックします。
  • 実行中のエミュレータの停止。メニュー アイコン をクリックして [Stop] を選択します。
  • エミュレータのデータの消去。メニュー アイコン をクリックして [Wipe Data] を選択します。

ハードウェア プロファイルをインポートおよびエクスポートする

[Select Hardware] ウィンドウで、次のようにしてハードウェア プロファイルのインポートとエクスポートを行うことができます。

  • ハードウェア プロファイルをインポートするには、[Import Hardware Profiles] をクリックして、コンピュータ上の定義を含む XML ファイルを選択します。
  • ハードウェア プロファイルをエクスポートするには、ハードウェア プロファイルを右クリックして [Export] を選択し、定義を含む XML ファイルを保存する場所を指定します。

AVD プロパティ

AVD 構成では、開発用コンピュータとエミュレータのインタラクションに加え、ハードウェア プロファイルでオーバーライドするプロパティを指定できます。[Verify Configuration] ウィンドウでは、AVD 構成の以下のプロパティを指定できます。(Advanced) というラベルが付いているプロパティは、[Show Advanced Settings] をクリックした場合にのみ表示されます。

AVD 構成のプロパティはハードウェア プロファイルのプロパティをオーバーライドします。エミュレータの実行中に設定したエミュレータ プロパティはこの両方のプロパティをオーバーライドします。

表 1. AVD 構成プロパティ

AVD プロパティ 説明
AVD Name AVD の名前を入力します。使用できるのは、英字の大文字と小文字、数字、ピリオド、アンダースコア、丸かっこ、ダッシュ、スペースです。この AVD 名が、AVD 構成を保存するファイルの名前になります。
AVD ID (Advanced) AVD ID を示します。AVD 名が AVD ID になります。この ID を使用して、コマンドラインから AVD を参照できます。
Hardware Profile [Change] をクリックすると、[Select Hardware] ウィンドウで異なるハードウェア プロファイルを選択できます。
System Image [Change] をクリックすると、[System Image] ウィンドウで異なるシステム イメージを選択できます。新しいイメージをダウンロードする際はインターネット接続が必要です。
Startup orientation

次のいずれかを選択して、エミュレータ画面の初期の向きを決定します。

  • 縦長: 横長よりも縦長
  • 横: 縦より横が広い

このオプションは、ハードウェア プロファイルでサポートされている場合にのみ、有効になります。ハードウェア プロファイルで縦向きと横向きの両方がサポートされている場合は、エミュレータで AVD を実行している最中に画面の向きを切り替えることができます。

Camera (Advanced)

有効なカメラのオプションを選択します。[Emulated] 設定と [VirtualScene] 設定では、ソフトウェアが生成する画像を作成します。[Webcam] 設定では、開発用コンピュータのウェブカメラを使用して写真を撮影します。

カメラ オプションは、ハードウェア プロファイルでカメラがサポートされている場合にのみ、使用できます。Wear OS、Android TV、Google TV では使用できません。

Network: Speed (Advanced)

データ転送速度を決定するネットワーク プロトコルを選択します。

  • GSM: Global System for Mobile Communications
  • HSCSD: High-Speed Circuit-Switched Data
  • GPRS: Generic Packet Radio Service
  • EDGE: Enhanced Data rates for GSM Evolution
  • UMTS: Universal Mobile Telecommunications System
  • HSDPA: High-Speed Downlink Packet Access
  • LTE: Long-Term Evolution
  • Full(デフォルト): コンピュータで実現できる最高速度でデータを転送します。
Network: Latency (Advanced) ネットワーク プロトコルを選択して、そのプロトコルである地点から別の地点へデータパケットを転送するのにかかる時間を設定します。
Emulated Performance: Graphics

エミュレータでグラフィックをレンダリングする方法を選択します。

  • Hardware: コンピュータ グラフィック カードを使用して高速レンダリングを行います。
  • Software: ソフトウェアでグラフィックをエミュレートします。グラフィック カードでのレンダリングに問題がある場合に役立ちます。
  • Automatic: グラフィック カードに応じて、エミュレータが最適なオプションを決定します。
Emulated Performance: Boot option (Advanced)

    AVD の起動方法を選択します。

  • Cold boot: デバイスは、毎回電源オフの状態から電源オンの状態になります。
  • Quick boot: デバイスは、保存されたスナップショットからデバイスの状態を読み込みます。
Emulated Performance: Multi-Core CPU (Advanced) エミュレータに使用する、コンピュータ上のプロセッサコア数を選択します。プロセッサコア数が多いほど、エミュレータは高速になります。
Memory and Storage: RAM (Advanced) ハードウェア メーカーが設定したデバイスの RAM 容量をオーバーライドします。サイズを大きくすると、コンピュータのリソースがより多く消費されますが、エミュレータのオペレーションがより高速になります。RAM サイズを入力して、B(バイト)、KB(キロバイト)、MB(メガバイト)、GB(ギガバイト)、TB(テラバイト)のいずれかの単位を選択します。
Memory and Storage: VM Heap (Advanced) ハードウェア メーカーが設定した VM ヒープサイズをオーバーライドします。ヒープサイズを入力して、B(バイト)、KB(キロバイト)、MB(メガバイト)、GB(ギガバイト)、TB(テラバイト)のいずれかの単位を選択します。
Memory and Storage: Internal Storage (Advanced) ハードウェア メーカーが設定した、デバイスで使用できる非リムーバブル メモリ領域の容量をオーバーライドします。サイズを入力して、B(バイト)、KB(キロバイト)、MB(メガバイト)、GB(ギガバイト)、TB(テラバイト)のいずれかの単位を選択します。
Memory and Storage: SD Card (Advanced)

デバイス上でデータの保存に使用できるリムーバブル メモリ領域の容量を指定します。

Android Studio によって管理される仮想 SD カードを使用するには、[Studio-managed] を選択し、サイズを入力して、B(バイト)、KB(キロバイト)、MB(メガバイト)、GB(ギガバイト)、TB(テラバイト)のいずれかの単位を選択します。カメラを使用する場合は、100 MB 以上に設定することをおすすめします。

この領域をファイルで管理するには、[External file] を選択し、[...] をクリックして、ファイルと場所を指定します。

詳細については、mksdcardAVD データ ディレクトリをご覧ください。

Device Frame: Enable Device Frame エミュレータ ウィンドウの周りに表示されるフレームを有効にすると、実際のデバイスの外観を再現できます。
Custom Skin Definition(Advanced) エミュレータで表示されたときのデバイスの外観を決定するスキンを選択します。スキンに対して大きすぎる画面サイズを指定すると、画面の一部がカットされ、画面全体を表示できなくなります。詳細については、エミュレータ スキンを作成するをご覧ください。
Keyboard: Enable Keyboard Input (Advanced) ハードウェア キーボードを使用してエミュレータを操作する場合は、このオプションを選択します。Wear OS と Android TV の場合、このオプションは無効になります。

ハードウェア プロファイルのプロパティ

[Configure Hardware Profile] ウィンドウでは、ハードウェア プロファイルの以下のプロパティを指定できます。AVD 構成のプロパティはハードウェア プロファイルのプロパティをオーバーライドします。エミュレータの実行中に設定したエミュレータ プロパティはこの両方のプロパティをオーバーライドします。

デバイス マネージャーに含まれる事前定義されたハードウェア プロファイルは編集できません。ただし、プロファイルをコピーして編集することは可能です。

デバイスタイプによっては、一部のプロパティは無効になっています。たとえば、「Round」プロパティは Wear OS デバイスでのみ使用可能です。

表 2. ハードウェア プロファイル構成プロパティ

ハードウェア プロファイルのプロパティ 説明
Device Name ハードウェア プロファイルの名前を入力します。使用できるのは、英字の大文字と小文字、数字、ピリオド、アンダースコア、丸かっこ、スペースです。このハードウェア プロファイル名が、ハードウェア プロファイルを保存するファイルの名前になります。
Device Type

次のいずれかを選択します。

  • Phone/Tablet
  • Wear OS
  • Android TV
  • Google TV
  • ChromeOS デバイス
  • Android Automotive
Screen: Screen Size 対角線で計測された画面の物理サイズをインチ単位で指定します。このサイズがコンピュータの画面よりも大きい場合、起動時に縮小されます。
Screen: Screen Resolution ピクセル単位で幅と高さを入力して、シミュレートされる画面の総ピクセル数を指定します。
Screen: Round 一部の Wear OS デバイスのような画面が丸いデバイスの場合は、このオプションを選択します。
Memory: RAM デバイスの RAM サイズを入力して、B(バイト)、KB(キロバイト)、MB(メガバイト)、GB(ギガバイト)、TB(テラバイト)のいずれかの単位を選択します。
Input: Has Hardware Buttons (Back/Home/Menu) デバイスにハードウェア ナビゲーション ボタンがある場合は、このオプションを選択します。 これらのボタンがソフトウェアでのみ実装されている場合は、選択を解除します。このオプションを選択した場合、これらのボタンは画面に表示されません。いずれの場合も、エミュレータのサイドパネルを使用して、ボタンの押下をシミュレートできます。
Input: Has Hardware Keyboard デバイスにハードウェア キーボードがある場合は、このオプションを選択します。ない場合は選択を解除します。このオプションを選択した場合、キーボードは画面に表示されません。いずれの場合も、コンピュータのキーボードを使用して、キー入力をエミュレータに送信できます。
Input: Navigation Style

次のいずれかを選択します。

  • None: ハードウェア コントロールを行いません。ソフトウェアを介してナビゲーションを行います。
  • D-pad: 十字キーをサポートします。
  • Trackball
  • 回転盤

これらのオプションは、デバイス本体のハードウェア コントロールに使用します。ただし、外部コントローラによってデバイスに送信されるイベントにも同様に使用します。

Supported device states

次のいずれかまたは両方を選択します。

  • 縦長: 横長よりも縦長
  • 横: 縦より横が広い

少なくとも 1 つのオプションを選択する必要があります。両方を選択した場合は、エミュレータで向きを切り替えることができます。

Cameras

カメラを有効にするには、次のいずれかまたは両方を選択します。

  • Back-Facing Camera: レンズがユーザーとは反対側を向いている
  • Front-Facing Camera: レンズがユーザーと同じ側にあるカメラ

カメラが有効になっている場合は、AVD 構成で選択したオプションに基づいて、開発マシンのウェブカメラか、エミュレータが提供する写真を使用して、写真の撮影をシミュレートできます。

Sensors: Accelerometer 向きの判定に役立つハードウェアをデバイスが備えている場合は、このオプションを選択します。
Sensors: Gyroscope 回転または傾きを検出するハードウェアをデバイスが備えている場合は、このオプションを選択します。ジャイロスコープを加速度計と組み合わせると、向きの検出がよりスムーズになり、6 軸方向システムに対応できます。
Sensors: GPS グローバル ポジショニング システム(GPS)の衛星測位システムをサポートするハードウェアをデバイスが備えている場合は、このオプションを選択します。
Sensors: Proximity Sensor 通話時にデバイスがユーザーの顔に近づいたことを検出して画面からの入力を無効にするハードウェアをデバイスが備えている場合は、このオプションを選択します。
Default Skin エミュレータで表示されたときのデバイスの外観を決定するスキンを選択します。解像度に対して大きすぎる画面サイズを指定すると、画面の一部がカットされ、画面全体を表示できなくなります。詳細については、以下のエミュレータ スキンを作成するをご覧ください。

エミュレータ スキンを作成する

Android Emulator スキンは、エミュレータ ディスプレイの視覚要素とコントロール要素を定義するファイルの集合です。AVD 設定で利用可能なスキン定義の中に、自身の要件を満たすものがない場合は、自身でカスタムスキンの定義を作成して AVD に適用できます。

各エミュレータ スキンには、以下のものが含まれます。

  • hardware.ini ファイル
  • サポートされる画面の向きと物理構成に対応するレイアウト ファイル
  • 背景、キー、ボタンなどのディスプレイ要素に対応する画像ファイル

カスタムスキンを作成して使用するには:

  1. スキン構成ファイルを保存するディレクトリを作成します。
  2. layout という名前のテキスト ファイルでスキンの外観を定義します。このファイルでは、特定のボタンのサイズやイメージ アセットなど、スキンのさまざまな特徴を定義できます。次に例を示します。

    parts {
        device {
            display {
                width   320
                height  480
                x       0
                y       0
            }
        }
    
        portrait {
            background {
                image background_port.png
            }
    
            buttons {
                power {
                    image  button_vertical.png
                    x 1229
                    y 616
                }
            }
        }
        ...
    }
    

  3. 同じディレクトリに、デバイス画像のビットマップ ファイルを追加します。
  4. デバイス設定用の INI ファイルで、追加のハードウェア固有のデバイス設定(hw.keyboardhw.lcd.density など)を指定します。
  5. スキンフォルダ内のファイルをアーカイブして、そのファイルをカスタムスキンとして選択します。

エミュレータ スキンの作成に関する詳細については、ツールのソースコードに含まれている Android Emulator スキンファイル仕様をご覧ください。