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

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

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

 

必要なもの

  • 7-zip
    http://sevenzip.sourceforge.jp/download.html
  • メモ帳ソフト
    Windows標準のメモ帳ではないソフトのほうが良いみたいです。
  • 先人たちの作成された機種ごとのzipファイル
    冒頭の通り

 

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   #");

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

  • ui_print(“○○”);
    →○にはCWMでスクリプト実行時に表示される部分。
  • run_program(“/sbin/busybox”, “mount”, “/system”);
    →busyboxが導入済みであればこのままで良さそう。コマンドプロンプトでも最初にマウントしますよね。これのコマンドです。別の書き方として「mount(“ext4”, “EMMC”, “/dev/block/mmcblk0p12”, “/system”);」というのもありました。
  • show_progress(1.2, 60);
    →作業進捗を示すバーの表示の増え方を表しているようです。本来は「,」で区切られた2つの数字の和が1.0になるようにするらしいですが、あまり気にしなくて良いのかな?^^;  show_progress(1.0,0);としておけばOK。
  • package_extract_dir(“system”, “/system”);
    →指定した場所に展開する命令です。上記スクリプトにパーミッションの設定が無くて、でもちゃんと動くのです。。なんか不思議w
    私は気になるのでパーミッションを設定するようにしてみました。
    「set_perm(0, 0, 0644, “/system/app/*.apk”);」
    system\app以下にあるapkファイルは一律644にしなさい、という内容なので、とりあえず汎用的になってるはず。
    同じようにある階層以下のファイルは拡張子ごとにパーミッションが設定できるので必要に応じて追記します。
  • run_program(“/sbin/busybox”, “umount”, “/system”);
    →冒頭でマウントしたのでアンマウント。
  • ui_print(“# Finish !! Let’s enjoy :p   #”);
    →最初の説明のとおり表示されるだけの部分ですが、無事完了したことをやっぱり知りたいですよねw

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

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

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

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

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

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

 

 

3件のコメント


  1. […] updater-scriptの編集俺zipの書き方は【CWM】俺様zip作成 (updater-script作成)を参照、もしくはTitanium Backupで作成したupdate.zipを参考に入れ込むファイルの定義を追記。パーミッション設定は以下 […]


  2. いつも情報ありがとうございます。
    さっそくトライしてみましたが、
    みごとに「aborted」でした。
    再度、チャレンジしてみます。