Androidで自作アプリをプリインストール状態にする

自分でシステムイメージを作ってデバイスに焼いたり、エミュレータで使いたい人以外にはニーズないし、本当に正しいやり方かどうかも分からないけど、とりあえずメモ。

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でもたぶん方法はほぼ一緒かと。

タイトルとURLをコピーしました