XperiaにおけるAndroidアプリ考察

【CWM】俺様zip作成 (updater-script作成)

先人たちの作成したCWM用zipファイル、いつも大変便利に使わせて頂いております。このzip、画像の差し替えや同名ファイルの差し替え程度しか弄れず、新たなファイルを追加するときなどは先人の皆様が提供してくださるまで首を長くして待っていたりしました。

いつまでもそういうのもアレかと思い、いろいろ調べて汎用性の高い(と思われる)zipファイルを作ってみましたので手順をまとめます。(と言ってもベースファイルありきです。1から作ると署名したりとまた一つハードルが高くなるようなので。。。)

 

必要なもの

 

zipファイルの構造

そんなもん知ってるわ!と言われそうですがw

今まではsystemフォルダの同名ファイルを差し替えたり画像ファイルの変更だけしかしてきませんでしたが今回は見て見ぬふりしてきた「META-INF」の中を書き換えていきます。

\xxxxxx.zip\META-INF\com\google\android\にある「updater-script」がその対象です。updater-scriptを右クリックしてPCにコピーします。

CWMはこのupdater-scriptを実行する仕様。毎回書き換える必要があるようですが、いろいろ調べてある程度汎用性の高いupdater-scriptを作成したいと思います。

まずはいつも大変お世話になってます@goro_tsukiyamaさんのXperia GXの用SystemUI modのupdater-scriptを見てみます。

ui_print("");
ui_print("");
ui_print("************************************************");
ui_print("*                                              *");
ui_print("*   docomo Xperia GX System UI mod             *");
ui_print("*                                              *");
ui_print("************************************************");
ui_print("");
ui_print("");
ui_print("# Mount File Systems         #");
run_program("/sbin/busybox", "mount", "/system");
ui_print("# Copy ROM Images            #");
show_progress(1.2, 60);
package_extract_dir("system", "/system");
show_progress(0.14, 3);
ui_print("# Unmount File Systems       #");
run_program("/sbin/busybox", "umount", "/system");
show_progress(1, 0);
ui_print("# Finish !! Let's enjoy :p   #");

このようにスクリプトがばーーーっと書かれています。これを見ただけで静かにファイルを閉じたい気持ちを抑えつつ、にらめっこ。こういう規則になっているらしい。

規則が分かれば何とか行けそうな気がしませんか?

あとはファイル入れ替えた時によくdalvik-cache消した?とかありますので、それもコマンドとして実行することができます。アンマウントするコマンドの前に挿入して下さい。

run_program("/sbin/busybox", "rm", "-rf", "/data/dalvik-cache");

これで手動で行う必要もなくなります。(システムファイルの入れ替えなので毎回やったほうがいいのか?よく分かってませんw)

こんな感じでスクリプトを変更し、7-zipでファイルを入れ替えるときに合わせてupdater-scriptも入れ替えるようにします。

なお、俺zipの適用で失敗すると「aborted」と表示され、ファイルが適用されることもなく、起動ループになることもありませんので安心してトライできます。