AVMで作成したAndroid Ver 2.3.3
Android SDKの「AVD Manager」を使用して、Ver 2.3.3の仮想Android端末を作成した。画面は端末情報を表示させたところ。どうやらエミュレータにはqemuを使用しているようで、CPUパワーが貧弱なマシンだと、激重の動作だ。。。
高解像度JPEG


■Android ID #2(2011/10/30)

 前回に続き、Android IDにこだわっちゃう回、其の二である。今回はIDをAVD(Android Virtual Device)から拾ってくる方法にトライしよう。Android SDKをインストールすると、「AVD Manager」というアプリが付いてくる。これがエミュレータプログラムで、様々なバージョン、様々なAPIレベルのAndroid仮想端末を作成することが可能だ。

 作り方は超カンタンで、AVDマネージャを開き「Nrw...」ボタンをクリックして必要となる項目を埋めてゆくだけで良い。Androidのバージョン設定やAPIレベルの指定、SD-Cardの容量なども、ここで設定する。仮想マシン名には適当な名称をくっつけてやる。

 仮想マシンの設定が終わったら、「Start...」ボタンをクリックする。「Launch Options」というウインドウが開くので、表示の際のスクリーンサイズの設定やらスナップショットモードで立ち上げるかどうか等を設定し、「Launch」を押す。1024x768のディスプレイサイズで立ち上げる際には、表示の際のScreen Sizeを「8 inch」に設定しておくと、程良く画面に収まる。「Snapshot(スナップショット)」モードとは、仮想マシンの起動を早くするための機能で、前回立ち上げ時の状態をイメージファイルとして保存し、次回立ち上げ時に利用することで、立ち上げ時間の短縮を図るものだ。もし仮想マシンの再立ち上げができなくなったら、この機能をオフにしてみよう。筆者の環境では、スナップショットをオンにして立ち上げようとすると、起動できないといったことが良く起こる。個人的な環境のせいだと思えるが、一応まあそういうこともあるということで・・・

 Android仮想マシンはJavaの嵐なので、起動には相当時間がかかる。ホストマシンのCPUパワーにも依存するが、まあ、超重いといっても過言ではないだろう。Androidの開発には、リッチなマシンリソースが必須なのである。暫く待っていると、お馴染みのAndroidのホーム画面と、ソフトキーボード、機能ボタンが表示され、エミュレータが起動する。

 起動時のエミュレータは、英語設定、時間もワヤクチャなので、とりあえず基本的な日本語環境設定を行っておく。次に「ブラウザ」を起動する。黙っていてもgoogleのサイトに接続されるので、「ログイン」をクリックしよう。ここで予め取得していたgoogleアカウントとパスワードを入力し、仮想マシンを認証させる。以上で仮想マシン側の設定は終わり。

 次に、お馴染みデバッグモニタ、DDMS.BATを起動させる。エミュレータに接続されると、端末番号とアクティビティ一覧が表示されるハズだ。この状態で別途「コマンドプロンプト」を開く。ここから後は前回と同じ処理で、「adb shell」の実行、フォルダの移動、「sqlite3 settings.db」の実行、そして「.dump secure」をやれば、Android IDを確認することができる。

Android SDKのAVDを起動する
仮想マシンの作成、起動等は、Android SDKの中にある「AVD Manager」で行う。
高解像度JPEG

仮想マシンの作成状況
最初は一台も仮想マシンが無い状態で起動するので、「New...」で好きな仮想マシンを作成する。タダだからといって無闇にたくさん作っても意味が無い。APIレベル毎に1つあれば十分だろう。なお、デフォルト設定では、仮想マシンの初期設定ファイルとイメージファイルは、Cドライブのマイドキュメント配下の「.android」にある「avd」フォルダに格納される。
高解像度JPEG

エミュレータの起動オプション
仮想マシンをスタートさせると、エミュレータの起動オプション設定画面が現れる。表示サイズはインチで設定。1024x768だと8インチ程度が最適だ。スナップショット機能は、チェックしてうまく起動できない場合には外してみよう。

エミュレータのホーム画面
CPUパワーが無いホストマシンだと、この画面が出るまでスンゲエ時間がかかるので覚悟しておくように。Androidの開発をやろうと思ったら、先ず高速マシンが欲しくなってくる。それにしても、マシンリソース食い過ぎ・・・
高解像度JPEG

googleアカウントの取得
ブラウザを起動すると、自動的にgoogleのトップへ接続されるので、予め取得しておいたgoogleアカウントでログインする。「gmail」のアドレスが表示されるようになればおK。
高解像度JPEG

DDMS.BATの起動
エミュレータの方の設定は完了したので、そのまま「ddms.bat」を起動して、デバッグモニタ画面に入る。仮想マシンと正常に接続できると、マシンネームとアクティビティ、ステータスが表示される。
高解像度JPEG

adbの起動
も一つコマンドプロンプトを起動させ、例によって「adb shell ↓」を打ち込み、仮想端末とのデバッギング・ブリッジを構築する。「ls」コマンドで中身を確認し、Android IDが格納されているデータベースがあるフォルダへ「cd」する。

settings.db
少なくともAndroid 2.2以降は、「/data/data/com.android.providers.settings/databases」の中に「settings.db」が格納されているハズだ。

sqlite3
「sqlite3 settings.db」で、データベースに接続する。

Android ID
「.dump secure」でsecureテーブルの内容をダンプすると、Android IDが表示される。当然、前回調査した実機「原道 N50」とは異なる端末IDになっている。

 ところで、Android SDKをインストールしたドライブには関係無く、AVDのイメージファイルはCドライブの「Documents and Settings」配下に生成されてしまうようだ。Cドライブに十分な空きがある場合にはそれでも良いのだが、筆者のPCのようにCドライブがパッツンパツンだと、チト困る。また諸々の事情により、AVDを他のドライブに格納させたいという要望もあるだろう。そこで、AVDのイメージファイルを任意のドライブの任意のフォルダに格納する方法を書いておく。

 AVDを作成すると、仮想マシンのイメージファイル本体を格納したフォルダと、仮想マシンの設定を記載した.iniファイルの2つが生成される。.iniファイルは、Cドライブの「Documents and Settings」配下の指定された場所から移動させることはできないが、容量の大きなAVDイメージファイルは移動可能だ。

 まず、AVDファイルを納めたフォルダを、移したいドライブへ移動させる。この例では、Cドライブの「Documents and Settings」配下に生成された仮想マシン名「catty2」のイメージデータを、「F:\data\android\catty2.avd」に移動させている。

 イメージを移動させた後は、Cドライブの「Documents and Settings」配下に残された.iniファイルをテキストエディタで修正する。本例では、「catty2.ini」というファイルが生成されているので、これをエディタで開き、pathの欄を下記のように書き換えれば良い。

 path=f:\data\android\avd\catty2.avd

 これで、AVDのイメージファイルをCドライブ以外の場所に置くことができる。さて、仮想マシンから取得したAndroid IDであるが、仮想マシンが異なると当然IDも変わる。同一のgoogleアカウントでログインしたとしても、マシンが変わればIDも変わるのは、端末固定IDなので当然であろう。今のところ、Androidのバージョンが2.2以降、即ち2.2と2.3.3の仮想マシンについては、この方法でIDを取得できているが、2.1以下だと、「settings.db」のsecureをダンプしても、それらしいものが見当たらない。2.1と2.2以降では、ID管理の仕方に変化があったようにも思われるが、詳細は不明。

移動させたAVDイメージファイル
この例では、CドライブからFドライブへイメージファイル一式を移動させている。
高解像度JPEG

Cドライブに残された.iniファイル
Cドライブの「Documents and Settings」配下には、作成した仮想マシンの数だけ「.ini」ファイルが生成される。イメージファイルを他のドライブに移動させた場合には、エディタで.iniファイルのpathを変更しておく。
高解像度JPEG




<< Menu Page



Copyright (C) Studio Pooh & Catty
1996-2011