Android マーケットをインストールする時にソフトウェア更新で market_update0.zip を適用するが、この様な特別な zip (以下 updater )を自前で用意する方法。
updater では例えば以下のことができる。
- /system へインストールする必要があるアプリをインストールする
- 日本語フォントをインストール
手順
例えば、日本語をインストールする updater を作成してみる。
- market_update0.zip を入手し展開
- market_update0/system/app ディレクトリを削除
- market_update0/system/fonts ディレクトリを作成
- 任意のフォントを market_update0/system/fonts にコピーする
ここまでの作業をすると以下のようなディレクトリ/ファイル構造ができる。
+--META-INF | +--com | +--google | +--android | +--update-binary | +--updater-script +--system +--fonts +--DroidSansJapanese.ttf
次に、updater-script を修正する。
修正箇所:
set_perm(0, 0, 0644, "/system/app/MarketUpdater.apk"); set_perm(0, 0, 0644, "/system/app/GoogleServicesFramework.apk"); set_perm(0, 0, 0644, "/system/app/NetworkLocation.apk"); set_perm(0, 0, 0644, "/system/app/Vending.apk");
修正後:
set_perm(0, 0, 0644, "/system/fonts/DroidSansJapanese.ttf");
後は、market_update0 以下のファイル全てを zip で圧縮する。ファイル名は任意で。
updater-script のコマンド
mount
用途
ファイルシステムのマウント
書式
mount(type, location, mount_point)
type には、MTD (yaffs2)か vfat (SD card)を指定できる。SD card をマウン
トしたい場合、location は location="/dev/block/<whatever>" 形式になる。
トしたい場合、location は location="/dev/block/<whatever>" 形式になる。
実行例
mount("MTD", "system", "/system");
is_mounted
用途
書式
is_mounted(mount_point)
実行例
unmount
用途
ファイルシステムのアンマウント
書式
unmount("mount_point");
実行例
unmount("/system");
format
用途
書式
format(type, location)
type は MTD のみ。
type は MTD のみ。
実行例
delete
用途
書式
実行例
delete_recursive
用途
書式
実行例
show_progress
用途
プログレスを表示する
書式
実行例
show_progress(1.300000, 50);
setprogress
用途
書式
実行例
package_extract_dir
用途
パッケージ(zip)のディレクトリを指定のパスに展開する
書式
package_extract_dir(package_path, destination_path)
実行例
package_extract_dir("system", "/system");
package_extract_file
用途
パッケージ(zip)のファイルを指定のパスに展開する
書式
package_extract_file(package_path, destination_path)
実行例
symlink
用途
シンボリックリンクの作成
書式
symlink target src1 src2 ...
実行例
set_perm
用途
パーミッションを設定する。
書式
set_perm(uid, gid, (0-7)(0-7)(0-7)(0-7), file_path);
実行例
set_perm(0, 0, 0644, "/system/fonts/DroidSansJapanese.ttf");
set_perm_recursive
用途
書式
実行例
getprop
用途
書式
実行例
file_getprop
用途
書式
実行例
write_raw_image
用途
書式
write_raw_image(file, partition)
実行例
write_firmware_image
用途
書式
write_firmware_image(file, partition)
実行例
apply_patch
用途
書式
apply_patch(srcfile, tgtfile, tgtsha1, tgtsize, sha1:patch, ...)
実行例
apply_patch_check
用途
書式
apply_patch_check(file, sha1, ...)
実行例
apply_patch_space
用途
書式
apply_patch_space(bytes)
実行例
ui_print
用途
メッセージを出力する
書式
ui_print(strings);
実行例
ui_print("Hello World!");
run_program
用途
外部のプログラムを実行する。
書式
run_program(command, args1, args2, ...)
実行例
run_program("/sbin/mount", "/dev/block/stl9", "/system");
参照 URL
http://forum.cyanogenmod.com/topic/7895-update-script-syntax/
http://nv-tegra.nvidia.com/gitweb/?p=android/platform/bootable/recovery.git;a=blob_plain;f=updater/install.c;hb=froyo-tegra
http://nv-tegra.nvidia.com/gitweb/?p=android/platform/bootable/recovery.git;a=blob_plain;f=updater/install.c;hb=froyo-tegra