AndroidのCWMなどで焼けるイメージの作り方

2014年6月1日
タグ: ,
Posted by Fukuda Takuro

福田です。今日は、AndroidのCWMなどで焼けるイメージの作り方をあっさり、さっくりと紹介します。
環境はMacを想定しています。

まずはひな形を取ってくる

まずはひな形を作るか取ってきましょう。
僕が作ったひな形はDropboxにおいてありますので勝手に取って行ってください。この中の、TemplateKit-Simple.zipですね。
TemplateKit | Dropbox
僕が作ったひな形の中には、展開するとAuto SignというZIPに署名するソフト(Auto-signディレクトリ、一部改変)と、Template-Customというベースとなるディレクトリが入っています。
一から作る場合は、どこかしらかCWMやTWRPで焼けるイメージを取ってきてゴニョゴニョするとうまくいきます。長ったらしくなるので省略します。

まずはTemplate-Customをいじる

好きなファイルをTemplate-Customディレクトリに置いていってください。
例えば、標準で入っているsystemディレクトリ内のdemoディレクトリなどなど。
置いたら、今度はTemplate-Custom内のMETA-INFディレクトリに入ります。しかし、見るところが特にないので、すっ飛ばしてMETA-INF/com/google/androidディレクトリまで入ります。
この中にある、updater-scriptが重要で、ここにCWMやTWRPに実行してほしいスクリプトを書きます。
標準では、このようなことが書いてあります。

ui_print("Start");

ui_print("Progress bar init");
show_progress(1.000000, 0);

ui_print("Progress bar 1/5");
set_progress(0.200000);

ui_print("Progress bar 3/5");
set_progress(0.60000);

ui_print("Mount device /system dir");
run_program("/sbin/busybox", "mount", "/system");

ui_print("Extract ZIP in system to device /system dir");
package_extract_dir("system", "/system");

ui_print("Extract ZIP in other/loremipsum.txt to device /system/lipsum.txt");
package_extract_file("other/loremipsum.txt", "/system/lipsum.txt");

ui_print("Create Symlink");
symlink("/system/lipsum.txt", "/system/loremipsum.txt");

ui_print("Set Permission");
set_perm(0, 0, 0644, "/system/lipsum.txt");

ui_print("Delete Device txt file");
delete("/system/demo/test.txt");
delete("/system/lipsum.txt");
delete("/system/loremipsum.txt");

ui_print("Clean up");
unmount("/system");

ui_print("Done, and Progress bar Max");
show_progress(1.000000, 0);

これら(set_progressなど)のコマンドの使用法については、ちむどろいどを参照していただければと思います。あるいは、意味をui_printのテキストから読み取っていただければ、と思います。一部書いていないのもありますが…。
幾つかコマンドを解説すると、
「package_extract_dir(“system”, “/system”);」
というのはTemplate-Custom内のsystemディレクトリ内の内容物を/systemディレクトリ内に展開するというコマンドです。
これと、
run_program(“/sbin/busybox”, “mount”, “/system”);
unmount(“/system”);
これさえあれば端末内/systemディレクトリをファイル追加、書き換えなら弄りたい放題できます。
run_programは、端末内のコマンドを実行するコマンドです。
unmountはしっかりしておかないと面倒なので、忘れずにやっておきましょう。

ファイル追加、スクリプトの追加がし終わったら、これをZIPに固めます。
Template-Customのままでいいのなら、TemplateKit-Simpleディレクトリまで上がります。
そして、ZIPコマンドで固めてしまいます。公開する際は-9オプションにしておくと良いと思いますが、今回は再帰的オプション以外何もなしで行きます。

zip -r update.zip Template-Custom

終わったら、これをAuto Signディレクトリに持っていきます。それと同時に、作業場所をAuto Signに移します。

mv update.zip ../Auto-sign
cd ../Auto-sign

それで、署名するために、./Sign.shを実行し、しばらく待ちます。そして、うまく成功すると「Please Press Enter/Return Key…」と言われるので、エンターキーを押し、終了します。

出来上がったファイルとして、update_signed.zipがあるので、これをadb pushなどでデバイスに送り込み、そしてTWRPやCWMなどでFlashするといい感じになります。

まとめ

プログレスバーだけ面倒ですが、工夫次第ですごく便利かつ簡単で、カスタムROMなどのいいとこ取りもできるようになるので、是非お試しください。