Android仮想デバイスマネージャーの使い方(SDK r21対応)

はじめに

Android仮想デバイス(以下、AVD)とは、PC上で動作するAndroid端末のエミュレーターであり、実機が無くともアプリケーションのデバッグを行うためのものです。Android仮想デバイスマネージャー(以下、AVDマネージャー)とは、このAVDを作成、管理するためのAndroid SDK付属のアプリケーションです。


2012年11月に更新されたAndroid SDK r21より、AVDマネージャーのユーザーインターフェイスが一新されました。このため、書籍やウェブサイトを参考にしながらAVDを作成しようとして、混乱してしまった方も多いことでしょう。この知恵ノートでは、新しくなったAVDマネージャーの使用法を解説します。


このノート作成に使用した開発環境は次の通りです。環境によっては、日本語化されている箇所や文面が異なることがありますが、配置などは同じなので適宜読み替えてください。


  • Windows 8 Pro 64bit版
  • ADTバンドル版Eclipse + Pleiades Plugin 1.4.0で日本語化
  • Android SDK r21.1
  • Java SE 6 Development Kit Update 45


新しいAVDマネージャーの操作方法

AVDマネージャーの起動

Android SDKをインストールし、EclipseにADTプラグインの導入が正しく行われていると、Eclipseの「ウィンドウ」メニューが下図のようになります。ここから、「Android仮想デバイス・マネージャー」を選択することで、AVDマネージャーが起動できます。或いは、Android SDKをインストーラーを使ってインストールしたときは、スタートメニューの「Android SDK」グループにある「AVD Manager」からも起動できます(ただし、こちらから起動した場合は、Eclipseを日本語化していてもAVDマネージャーは日本語化されません)。 

1.png


AVDマネージャーの画面

起動すると、次のような画面になります。この画面の見た目自体は、旧バージョンとあまり変わりませんが、上部にタブが追加されています。


Android Virtual Devicesは、AVDの新規作成、編集、削除や、起動などの操作を行うための画面です。 

2.png


Device Definitionsは、r21で新たに追加された項目で、AVDの画面サイズや解像度、カメラやセンサーの有無など、AVDの各種機能の定義を管理するためのものです。初期状態で様々な定義が用意されています。 

3.png


新しい定義を作成

Device Definitionsの画面で「New Device」ボタンを押したり、既存の定義をダブルクリック(或いは右側の「編集」ボタンが「クローン」ボタンに変化するので、それを押しても同じ)したりすると、次のような画面になります。 

4.png


標準で用意されているデバイスは限られているため、自分が利用している実機の環境に近いAVDを作成したくても、「痒いところに手が届かない」場合が多くあります。そのようなときは、この画面で細かい情報を入力することで、自分好みの定義を作成することが可能です。興味のある方は、いろいろ試してみると良いでしょう。ユーザーが作成した定義は、先程のDevice Definitionsの画面で定義を選択して「削除」ボタンを押すことで削除することができます。初期状態で用意されている定義は削除できません。


AVDの作成

Android Virtual Devicesに戻って「新規」ボタンを押すと、AVD作成が行えます。下図が、旧バージョンから一新された作成画面です。 

5.png


AVD名は、AVDマネージャー上に表示されるAVDの名称です。単なる名称なので何でも良いのですが、アルファベット大小文字、数字、ドット、アンダーバー、ハイフン(マイナス記号)しか使用できません。


装置は、Device Definitionsのリストにある定義から装置の設定情報を選択するためのものです。


ターゲットは、AVD内で動作させるAndroidのバージョンを選択します。SDKマネージャーでバージョンごとにSDK Platformをインストールすることができますが、そこでインストール済みのバージョンのみ、リストに表示されます。なお、EclipseからSDKマネージャーを起動し、SDK Platformをインストールして、そのまま続けてAVDマネージャーを起動しても、このリストには加わりません。一度、Eclipseを再起動する必要があります。


CPU/ABIは、Android 4.0以降で追加されたエミュレーションするCPUの選択です。Android 3.2以前はARMプロセッサのエミュレーションのみなので、この項目は操作できません。Android 4.0以降では、SDKマネージャーで下図のようなところにある各CPUに対応するSystem Imageをインストールしておく必要があります。なお、System ImageはAPIレベルごとインストールする必要があります。 

6.png


キーボードは、PCのキーボードから動作中のAVDに直接入力する機能を有効にするかどうかの選択です。


スキンは、AVDの右側に操作パネルを表示させるかどうかの選択です。これについては、後で有効にした場合と無効にした場合の画像を掲載します。


フロント・カメラ及びバック・カメラは、カメラ機能の選択です。「None」は使用しない、「Emulated」はエミュレーションによるダミー映像の入力機能、「Webcam0」はPCに接続したWebカメラの映像の入力機能です(末尾の数字はPCに接続しているWebカメラによって異なります)。ただし、Webカメラの映像入力はある程度PCの能力を必要とするため、安定した利用が難しいこともあります。


メモリー・オプションはAVDに持たせるメモリの量の設定です。RAMはメインメモリのサイズ、VMヒープはJava仮想マシンが利用できるヒープメモリのサイズを設定します。


内部ストレージは、AVDの内蔵ストレージのサイズを設定します。


SDカードは、AVDに仮想的なSDカードを認識させるための設定です。SDカード実物を用意する必要はなく、「サイズ」の項目に任意のサイズを設定すればPCのハードディスク上で仮想SDカードデバイスを用意し、それをAVDに認識させます。なお、「ファイル」という項目はファイル化された仮想SDカードのファイルを指定するもので、このファイルはAndroid SDKに含まれるmksdcardというツールで作成できます。この説明は、ここでは省きます。


エミュレーション・オプションは、AVDの特殊機能を設定するもので、「スナップショット」と「ホストGPUを使用する」の2つの設定があります。


スナップショットとは、AVDの状態をホストPCのディスクに記録することで、AVDの起動を素早く行うことができる機能です。


ホストGPUを使用するとは、エミュレーターの動作にホストPCのGPUの機能を利用するものです。これにより、AVD内の描画の高速化が図れます。ただし、この機能はターゲットがAndroid 2.3.3のとき、CPUの仮想化支援機能をサポートするHAXMとの併用ができません。併用しようとすると、AVDを起動したときに画面が真っ黒のままで一切動きません。そうした現象が起きたときは、この点を疑ってみましょう。


なお、エミュレーション・オプションを両方同時に使用することはできません。両方にチェックを入れるとエラーメッセージが表示され、OKボタンがグレーアウトして押すことができなくなります。


AVDの起動

設定を完了すると、AVDマネージャーのリストにAVDが加わります。この行をクリックすると、右側の操作ボタンがいくつか有効になります。「編集」は選択したAVDの設定編集、「削除」はAVDの削除、「修復」はAVDが異常終了したときの修復(通常は選択できません)、「詳細」は設定内容の確認、「開始」はAVDの起動です。 

7.png


「開始」ボタンを押すと、次のような画面が表示されます。 

8.png


実際のサイズに表示をスケールするのチェックを有効にすると、その下のいくつかの項目が入力可能になります。これは、AVDの画面サイズに対してPCのディスプレイ上でどのくらいの比率で表示するかを設定できるものです。通常は操作する必要はありませんが、興味があれば試してみるのも良いでしょう(例えば1024x768などのモニタで1280x720などのAVDをスケール1.00で起動すると、画面がAVDで埋め尽くされて大変なことになりますが)。


ユーザー・データを消去するは、AVDの内部ストレージのデータを消去してから起動するかどうかの選択です。通常、AVDは一度終了しても、インストールしたアプリケーションは残っています。このチェックを有効にすることでそれらを全て破棄し、 真っ新な状態でAVDを起動したいときに使用します。


スナップショットから起動する及びスナップショットへ保管するは、AVD作成画面で「スナップショット」を有効にしているときのみ操作できます。それぞれ、起動するときに保管してあるスナップショットを参照するか、AVDを閉じるときにスナップショットを保管するかを表しています。


「起動」ボタンを押せば、AVDが起動します。


AVDの画面

AVDを起動しました。これは、装置に「5.1" WVGA (480 x 800: mdpi)」を選んだときの構成です。右側に操作パネルがあるレイアウトはこれまでと同様ですが、パネル上のキーボードが廃止されました。 

9.png


前述したAVD作成画面で、スキンのチェックを外してAVDを作成すると、下図のように右側パネルがない状態で起動します。 

10.png


パネルの拡大図です。「not enabled in AVD」と表示されているボタンは、操作が無効であることを示しています。下図ではDPADの操作が無効になっています。また、AVD作成画面でキーボードのチェックを外していると、Hardware Keyboardも無効になります。 

11.png


また、AVDの定義で右側にある「Buttons」の項目が「Software」になっていると、Hardware Buttonsも無効になり、その代わりに画面下方にソフトウェアキーが表示されるようになります。下図は、「5.1" WVGA」の定義のクローンを作成し、Buttonsの項目をSoftwareに変更したものです。近年のAndroid端末でハードウェアキーが存在するものは滅多に見かけなくなりましたから(もう絶滅してるかな?)、むしろこちらの方が見慣れた構成でしょう。 

15.png


スナップショットについて

スナップショットが存在しない状態で「スナップショットから起動する」にチェックを入れて起動しても、新規起動と同じ扱いになるのでエラーになることはありません。また、常に特定のセットアップをした状態から起動したいということであれば、一度「スナップショットへ保管する」にチェックを入れた状態でAVDを起動してすぐに終了し、以後は「スナップショットから起動する」にはチェックを入れて「スナップショットへ保管する」のチェックを外せば、いつも同じスナップショットから起動できるという活用法もあります。なお、「スナップショットへ保管する」にチェックが入っている場合、AVDを閉じるときにディスクに書き込む処理が入るため、ウィンドウが閉じられるまで少し時間がかかる場合があります。


キーボードによる操作

なお、Hardware Keyboardが有効のときには、次のキーでパネルの操作を代用できます(Hardware Keyboard not enabled in AVDと表示されているときには使えません)。


ボリュームアップ:【+】 または 【Ctrl+F5】

ボリュームダウン:【-】 または 【Ctrl+F6】

電源ボタン:【F7】

ホーム:【HOME】

メニュー:【F2】 または 【Page Up】

戻る:【Esc】

検索:【F5】 

DPAD 上下左右:【↑】【↓】【←】【→】 または テンキーの【8】【2】【4】【6】

DPAD 決定:【Enter】

TRACKBALL:【F6】 で開始、もう一度 【F6】 で解除


注意

  • Hardware Keyboardを有効にしても、上記の通りテンキーの2、4、6、8が上下左右キーに割り当てられているため、アプリケーションのEditTextなどにテンキーでこれらの数値を入力することができません(フルキーボード側の数字キーはもちろんすべて使えますが)。テンキーでも1、3など操作に割り当てられていない値は入力できるので非常に紛らわしいのですが、「仕様」ということで諦めるより外ないようです。仕様不備のような気もするんだけど・・・。

トラブルシューティング

このように機能が一新されたAVDマネージャーですが、作成画面でのパラメーター設定の仕方によっては、うまく起動できない場合があります。

新規作成でOKボタンがグレーアウトしていて押せない

AVD名に違反がある、ターゲットがAndroid 4.0以降ならばSystem Imageがインストールされていない、「スナップショット」と「ホストGPUを使用する」の両方にチェックを入れているなど、設定に問題があるとOKボタンがグレーアウトしてAVDが作成できません。CPU/ABIの項目が下図のように「No system images installed for this target.」と表示されているときは、System Imageがインストールされていないことを示しています。System ImageはAPIレベルごとにインストールが必要なため、特に注意しましょう。 

12.png


AVDが起動できない

AVDを起動しようとすると、下図のようなエラーが表示されて起動できない場合があります。これは、メモリー・オプションでRAMを多く設定し過ぎたときに発生します。Windows 7 64bit版の場合、1024を設定していると必ずこのエラーとなり起動できません。 

13.png


Windows版のAndroid SDK r21.1で、RAMに大きな値を設定していると下図のような警告がでるようになりました。「768Mよりも大きな値を設定するとエミュレーターの起動に失敗する場合があるので、その場合はRAMの設定を徐々に少なくしてみてください」といった表示です。これは、Windowsが一つのタスクに割り当てることのできるメモリの制約に伴うもののようです。

16.png


アプリケーションが強制終了する

無事にAVDの起動に成功しても、Android上で下図のようなエラーが表示され、アプリケーションがしばしば強制終了してしまうことがあります。これは、VMヒープが少なすぎるときに起きやすいようです。そのようなときは、VMヒープの設定を少し増やしてみましょう。 

14.png


突然操作パネルが出なくなってしまった

SDK r21では作成済みのAVDの編集をしたときに、キーボードとスキンのチェックの状態が正しく保存されない不具合があり、そのままAVDを起動するとそれまで表示されていたはずの操作パネルが出なくなってしまうという現象がありましたが、この不具合はr21.1で修正されたようです。


HOME画面に戻れない

操作パネルを非表示、キーボードを無効に設定し、Android 2.3.3のようにアプリケーション動作中に画面上に戻るボタンやHOMEボタンなどが表示されないプラットフォームを選択したAVDを起動すると、1つでもアプリケーションを起動するとHOME画面に戻る手段が何もないという状態になってしまいます。そんなAVDも作れてしまうというのが何ですが・・・。


起動に時間がかかり過ぎる、AVDの動作が重い

起動に時間がかかるのは、スナップショットをうまく活用することで回避できます。しかし、動作中の重さはPCのスペックに直結することなので、なかなか改善は難しいでしょう。Android 4.0以降であれば、まずホストGPUの使用を試してみるのも一つの方法です。


また、利用しているPCに搭載されているCPUが、仮想化支援機能というものに対応していれば、それを利用することで改善できることがあります。これについては、拙筆ノート「Android仮想デバイス(AVD)の高速化」をご参照ください。ただし、仮想化支援機能を利用すると、スナップショット機能が使えなくなります。設定上、チェックを入れることは可能ですが、実際には機能しません。


エミュレーション画面の表示がちらつく

Windows上でAVDを動かすと、画面が乱れたり突然真っ白になったりと、不安定な動作をすることがあります。特にWindows 8で顕著です。Android開発者サイトでは、実はWindows 8はAndroid SDKのサポートOSに含まれていません。特に、画面サイズが大きなAVDは極めて不安定で、起動すらままならない場合もあります。Windows 7の方がいくらか安定しているので、開発用途のPCであれば現状では8は避けた方が良いかもしれません。また、RAMの値を大きく設定しすぎた場合も、動作が不安定になり易いようです。


改版履歴

(2012/12/03)初版

(2013/01/15)System Imageのインストールについての注意書き追加

(2013/01/24)「新規作成が完了できない」を追記

(2013/05/07)体裁崩れの修正、画面画像の貼り替え

(2013/11/23)ホストGPU使用オプションの記述を修正


本文はここまでです このページの先頭へ