Android ビルドしたイメージをエミュレータで動かす標準的な方法
Android OS 1.5からエミュレータの仕組みが変化しました。ソースからコンパイルしたイメージをエミュレータ上で使用する時には、エミュレータのイメージを上書きしても良いですが、元に戻すのも大変ですので、より標準的な新規ターゲットの作成をしてみました。
ビルドしたイメージをターゲットとして作成、その後エミュレータで使用するまでを纏めました。
ターゲットとは
ターゲットに関するコマンドについては、Android AVDとemulator (SDK 1.5)に詳しく記載してあります。そちらも合わせてご覧ください。
Android OS 1.5をインストールした状態で、android list targetsを実行すると以下のように表示されます。
Available Android targets:[1] Android 1.1API level: 2Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P[2] Android 1.5API level: 3Skins: HVGA (default), HVGA-L, HVGA-P, QVGA-L, QVGA-P[3] Add-on: Google APIsVendor: Google Inc.Description: Android + Google APIsBased on Android 1.5 (API level 3)Libraries:* com.google.android.maps (maps.jar)API for Google MapsSkins: QVGA-P, HVGA-L, HVGA (default), QVGA-L, HVGA-P
Dev Guideの、Android Virtual Devicesには以下のように記載されています。
The android tool scans the <sdk>/platforms and <sdk>/add-ons directories looking for valid system images and then generates the list of targets. Here’s an example of the command output:
従って、<sdk>/add-onsディレクトリにディレクトリを作成して適切に設定ファイルを記載することで新しいターゲットを作成でき、そのターゲットからAVDファイルを作成することでいつでも簡単にイメージを切り替える事が可能になります。
前提条件
- Androidのソースをコンパイルしてイメージが出来上がっている事
- Android SDK1.5r2がインストール済みの事
なお、今回私は、BuildはUbuntoで行いイメージをVistaに持ってきて動作確認を行いましたが、どのOSでも特に問題は発生しないと思います。
ターゲット
ターゲット作成する上で参考になるのは、<sdk>/plartforms/android-1.5とadd-ons/google_apis-3です。この両者を比較すると色々と分かると思いますので、今後のバージョンアップで仕様変更がありこの記事が古くなった時は参照してください。
- ターゲット名を決める。
target名は”taosoftware”としました。何でも構いませんが以降の”taosoftware”の文字を適切に置き換えてください。
- ターゲットディレクトリの作成
<sdk>//add-ons/google_api3を同じディレクトリにコピーしてtaosoftwareに変更
この状態でandroid targets listを実行すると以下のようにid4が表示されてtargetが増えているのが分かります。id: 4Name: Google APIsType: Add-OnVendor: Google Inc.Description: Android + Google APIsBased on Android 1.5 (API level 3)Libraries:* com.google.android.maps (maps.jar)API for Google MapsSkins: QVGA-P, HVGA-L, HVGA (default), QVGA-L, HVGA-P
- いらないファイルの削除
lib、sample、docディレクトリは今回必要ありませんので削除します。
- manifest.iniの編集
ここに、ターゲットの名前やその他の情報を記載します。
変更前
# SDK Add-on Manifestname=Google APIsvendor=Google Inc.description=Android + Google APIs# version of the Android platform on which this add-on is built.api=3# version of the add-onversion=2# list of libraries, separated by a semi-colon.libraries=com.google.android.maps# details for each librarycom.google.android.maps=maps.jar;API for Google Maps
変更後
# SDK Add-on Manifestname=Taosoftware Imagevendor=Taosoftware co.,ltd.description=Android + Taosoftware image# version of the Android platform on which this add-on is built.api=3# version of the add-onversion=2
- hardware.iniの編集
変更は必要ありません(元々空です)
- イメージのコピー
ビルドしたイメージをimgesファイルにコピーします。
- ramdisk.img
- userdata.img
- sytem.img
ターゲット作成の確認
android list targetsを実行して以下のように出力されれば終了です。
id: 4Name: Taosoftware ImageType: Add-OnVendor: Taosoftware co.,ltd.Description: Android + Taosoftware imageBased on Android 1.5 (API level 3)Skins: QVGA-P, HVGA-L, HVGA (default), QVGA-L, HVGA-P
AVDファイルの作成
AVDファイルを作成します
>android create avd -n test -t 4 -c 16MCreated AVD 'test' based on Taosoftware Image (Taosoftware co.,ltd.)
AVDファイル作成の確認
>android list avdName: testPath: C:\Users\gaku\.android\avd\test.avdTarget: Taosoftware Image (Taosoftware co.,ltd.)Based on Android 1.5 (API level 3)Skin: HVGASdcard: 16M
エミュレータの起動
emulator @test
エミュレータが起動したら、Setting->About Phoneを確認
左が今回作成した物、右がAndroidSDKについてきた、target3です。
左のイメージは、Buildの所に”gaku”という文字が入っています。
ちなみに、このイメージは、設定等は何も変更せずにmakeした物ですが、日本語へのローカライズも終了しています。デフォルトで入っているソフトウェアは以下のような物が入っています。
コメント
コメントを投稿