Miletone2限定ってわけじゃないですけど…
Milestone2のバッテリーアイコン表示は0%、10%、20%、40%、60%、80%、100%の7段階表示ですが、これを0%、5%、10%、15%、20%、30%、40%、50%、60%、70%、80%、90%、100%の13段階に変更します。
htc端末なんかだと1%刻みで表示するようにする事ができます。
framework-res.apk内のxmlを編集するのですが、バイナリ形式になっているのでテキスト形式に変換してあげる必要があります。
変換にはapktoolを使います。
apktool
adb pullとかでframework-res.apkを引き抜いてきて
apktool d framework-res.apk
とすると同じディレクトリにframework-resフォルダが出来ます。
今回編集するのは/res/drawable-hdpi/stat_sys_battery.xmlと/res/values/public.xmlです。
端末によってはstat_sys_battery.xmlはdrawableの方にしかないかもしれません。
stat_sys_battery.xml
<?xml version="1.0" encoding="UTF-8"?>
<level-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/stat_sys_battery_0" android:maxLevel="1" />
<item android:drawable="@drawable/stat_sys_battery_5" android:maxLevel="5" />
<item android:drawable="@drawable/stat_sys_battery_10" android:maxLevel="10" />
<item android:drawable="@drawable/stat_sys_battery_15" android:maxLevel="15" />
<item android:drawable="@drawable/stat_sys_battery_20" android:maxLevel="20" />
<item android:drawable="@drawable/stat_sys_battery_30" android:maxLevel="30" />
<item android:drawable="@drawable/stat_sys_battery_40" android:maxLevel="40" />
<item android:drawable="@drawable/stat_sys_battery_50" android:maxLevel="50" />
<item android:drawable="@drawable/stat_sys_battery_60" android:maxLevel="60" />
<item android:drawable="@drawable/stat_sys_battery_70" android:maxLevel="70" />
<item android:drawable="@drawable/stat_sys_battery_80" android:maxLevel="80" />
<item android:drawable="@drawable/stat_sys_battery_90" android:maxLevel="90" />
<item android:drawable="@drawable/stat_sys_battery_100" android:maxLevel="100" />
</level-list>
stat_sys_battery.xmlはこんな感じに編集します…
public.xml
<?xml version="1.0" encoding="UTF-8"?>
<resources>
~
<public type="drawable" name="stat_sys_battery_0" id="0x010803f1" />
<public type="drawable" name="stat_sys_battery_5" id="0x010803f2" />
<public type="drawable" name="stat_sys_battery_10" id="0x010803f3" />
<public type="drawable" name="stat_sys_battery_15" id="0x010803f4" />
<public type="drawable" name="stat_sys_battery_20" id="0x010803f5" />
<public type="drawable" name="stat_sys_battery_30" id="0x010803f6" />
<public type="drawable" name="stat_sys_battery_40" id="0x010803f7" />
<public type="drawable" name="stat_sys_battery_50" id="0x010803f8" />
<public type="drawable" name="stat_sys_battery_60" id="0x010803f9" />
<public type="drawable" name="stat_sys_battery_70" id="0x010803fa" />
<public type="drawable" name="stat_sys_battery_80" id="0x010803fb" />
<public type="drawable" name="stat_sys_battery_90" id="0x010803fc" />
<public type="drawable" name="stat_sys_battery_100" id="0x010803fd" />
</resources>
public.xmlはこんな感じで追加します…drawableのidは0x01080xxxです、ダブらないように定義してあげます。
あとはdrawable-hdpiにpngを追加してあげればokです。
xmlの編集、画像の追加が終わったらapktoolでbuildします。
apktool b framework-res framework-res.apk
通常はこの時点で出来たapkをそのまま/system/frameworkに入れてあげればOKなのですが、
Milesone2はresources.arscを無圧縮で.apkに入れてあげなくてはいけないので注意してください。
apktoolでビルドしたapkの中からresources.arscと今回編集、追加したファイルを抜き出してきます。
そしてオリジナルのframework-res.apkに7-zip等で無圧縮で追加します。
おまけ…deodexしてみる
xUltimate
adbで繋がる環境があればsystemから.apk/.odexファイルを引っこ抜いてきてdeodexまで自動で行ってくれます。
後はupdate.zipにまとめてあげればok
update-script
show_progress 0.5 0
run_program PACKAGE:remtool.sh
copy_dir PACKAGE:system SYSTEM:
show_progress 0.5 10
remtool.sh
#!/sbin/sh
mount /system;
rm -rf /system/app/*.odex;
rm -rf /system/framework/*.odex;
exit 0;
Enjoy!