自分でシステムイメージを作ってデバイスに焼いたり、エミュレータで使いたい人以外にはニーズないし、本当に正しいやり方かどうかも分からないけど、とりあえずメモ。
1. mydroid/packages/app 以下にアプリのソース一式を置き、Android.mkを作る。
実際は、mydroid/packages/app 以下でなくても mydroid/external の下でもどこでも良いはず。むしろ自作アプリならexternalかまた別のディレクトリが良いかも。
Eclipse+ADTでアプリを作るとAndroid.mkが作られないので、同じくmydroid/packages/appにある他のアプリ(Emailあたり)からAndroid.mkをコピーしてきて、LOCAL_PACKAGE_NAMEを変更すれば最低限はOK。
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_PACKAGE_NAME := TestApp
include $(BUILD_PACKAGE)
# additionally, build unit tests in a separate .apk
include $(call all-makefiles-under,$(LOCAL_PATH))
2. mydroid/build/target/product/generic.mkを編集
generic.mkを編集するので、targetがgenericの場合しか有効にならなさそうな気がするけど、以下のような感じでPRODUCT_PACKAGESに追加したい自作アプリ名を追記する。
PRODUCT_PACKAGES := \
AlarmClock \
<省略>
TestApp
3. make
mydroid全体をビルドし、system.imgなどを作る。
4. エミュレータ起動
とりあえずmakeしてできたイメージからエミュレータを起動してみる。私の場合は以下のようなスクリプトを用意して使ってる。
imagedir=~/mydroid_donut/out/target/product/generic
kerneldir=~/mydroid_donut/prebuilt/android-arm/kernel
skindir=~/mydroid_donut/development/emulator/skins
./emulator \
-sysdir $imagedir/system \
-ramdisk $imagedir/ramdisk.img \
-kernel $kerneldir/kernel-qemu \
-skindir $skindir \
-skin HVGA \
-system $imagedir/system.img \
-data $imagedir/userdata.img \
-sdcard $imagedir/sdcard.img
こうやって起動したAndroidには、最初から自作アプリがインストール済みの状態(ランチャーメニューに出てくる)になっている。他のtargetでもたぶん方法はほぼ一緒かと。