2011年05月10日

フォント置き換え用のupdate.zipを作る (for DHD/CM7)

突然ですが、愛機NexusOneを里子に出して、DesireHDを入手しました。
もちろん毎度お馴染みCyanogenModを入れて使っているわけです。はい。

で、これまたいつもの事ながら、Nightly Buildをがんがん試してしまうわけですが、NexusOneの時に作成したフォント置き換え用のupdate.zipがうまく動きません。これは困った。
DHDの場合解像度も変更したいので、改めてフォント置き換え&解像度変更用のupdate.zipを作ることにしました。

毎度毎度のお約束。以下の内容は全て無保証です。
煉瓦になってもくじけない。転ばぬ先のバックアップ!

まずは前提…の部分はもういいですよね。
前回はubuntuで作業をしていましたが、今回はOSX使ってます。Javaが動けば何でもいいっぽい。
署名用のAutoSignはLinuxとかOSXとか全然気にしないで使える模様。

今回は雛形となるupdate.zipとして、CyanogenmodのNightly Buildそのものを使う事にしました。
と言っても必要なのは前回と一緒で、
META-INF/com/google/android/updater-script
META-INF/com/google/android/update-binary

だけです。

これも前回と同じく、フォントを置くディレクトリを先ほど取り出したMETA-INFと同じ階層に作成し、自分の使いたいフォントを配置しましょう。今回私が入れ替えたのは以下の3つのフォントです。
system/fonts/DroidSans.ttf
system/fonts/DroidSansFallback.ttf
system/fonts/DroidSansJapanese.ttf

DroidSans-Bold.ttfについてはDroidSans.ttfと同じでいいので、後処理で何とかします。

そうしたらアップデート用のスクリプトを編集します。
適当なエディタでMETA-INF/com/google/android/updater-scriptを以下のように編集して下さい。
assert(getprop("ro.product.device") == "ace" || getprop("ro.build.product") == "ace" || getprop("ro.product.board") == "ace");
ui_print("Customizing...");
show_progress(0.1, 0);
mount("ext4", "EMMC", "/dev/block/mmcblk0p25", "/system");
delete("/system/fonts/DroidSans.ttf", "/system/fonts/DroidSans-Bold.ttf", "/system/fonts/DroidSansFallback.ttf", "/system/fonts/DroidSansJapanese.ttf");
package_extract_dir("system", "/system");
set_perm(0, 0, 0644, "/system/fonts/DroidSans.ttf");
set_perm(0, 0, 0644, "/system/fonts/DroidSansFallback.ttf");
set_perm(0, 0, 0644, "/system/fonts/DroidSansJapanese.ttf");
symlink("DroidSans.ttf", "/system/fonts/DroidSans-Bold.ttf");
package_extract_file("scripts/changedensity.sh", "/tmp/changedensity.sh");
set_perm(0, 0, 0777, "/tmp/changedensity.sh");
run_program("/tmp/changedensity.sh");
ui_print("Customize complete!");
unmount("/system");

そして解像度の変更用スクリプトをscripts/changedensity.shという名前で以下のように作成します。
#!/sbin/sh
#
# Change LCD density ( 240 -> 200 )
#

cp /system/build.prop /sdcard/build.prop
sed '/ro.sf.lcd_density/s/240/200/' /sdcard/build.prop > /system/build.prop

exit 0

これでファイルの準備は完了。
全てのファイルをzip形式でアーカイブします。
zip -r customize-ace.zip META-INF system scripts

そしてzipファイルに署名を行います。
cd Auto-sign
java -jar signapk.jar testkey.x509.pem testkey.pk8 ../customize-ace.zip ../customize-ace-signed.zip

これで完成。あとはSDカードに放り込んでいつもどおりアップデートを行えばOKです。

細かい説明端折りまくりなので、ご自分の環境に合わせて適当に読み替えをお願いしますね。
posted by 月水和尚 (とも) at 19:45 | Comment(0) | TrackBack(0) | Android
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。