バッテリー残量100段階表示mod

SystemUI.apk の deodex 化が公開されたので、この機会にチャレンジしてみました。


ちょっと面倒くさいので簡略化して書いておきます。分かる人だけやってみて下さい。

例のごとく Unlocked な端末が対象です。

UOT Kitchen を使ってみる

結果として NG 。エラーが出て通りません。

apk を自力で展開してパッチする

用意するもの
ツール
Apk Manager または Apk Multi Tool
Apk Tool


本当に必要なのは apktool.jar なので、コマンドライン叩ける人は apktool だけあれば良いはず。

いじるファイル
  • /system/app/SystemUI.apk
    • SystemUI.apk は deodex 化されているものとする


うまく行かなかったらコレも。

  • /system/framework/framework-res.apk


また、いくつかのファイルを参照してる「かも」しれないので、以下のようにして持ってくる。

> adb pull /system/app/SystemUI.apk
> mkdir framework
> adb pull /system/framework .\framework


また、100段階表示用のリソースは適当なカスタムロムから引っこ抜くか、もしくは以下から。

手順

まず必要な apk を apktool に登録。本当に必要かどうかは知らない。

> apktool.bat if .\framework\framework-res.apk
> apktool.bat if .\SystemUI.apk
> apktool.bat if .\com.htc.resources.apk
> apktool.bat if .\framework-htc-res.apk


その後、Apk Manager なり Apk Tool なりでデコンパイル等々。これらについてはググること。


以下私が Apk Multi Tool でやった手順。

  1. .\place-apk-here-for-modding\ に apk を入れる
  2. Set current project
  3. Select compression level for apk's → 0
  4. Decompile apk
  5. リソース書き換え (上書き)
    1. .\project\hoge.apk\res\drawable\ 以下
    2. .\project\hoge.apk\res\drawable-hdpi\ 以下
  6. Compile apk
    1. Is this a system apk (y/n) → y
    2. Aside from the signatures, would you like to copy over any additional files that you didn't modify from the original apk in order to ensure least # of errors (y/n) → y
    3. 続行するには何かキーを押して下さい... と出るので .\keep ディレクトリ以下から改変対象となったファイルを削除する。
      1. .\keep\res\drawable\ の stat_sys_battery.xml 等々
      2. .\keep\res\drawable-hdpi\ の stat_sys_battery_0.png 等々
      3. .\keep\resources.arsc
      4. 削除したら何かキーを押す
    4. .\place-apk-here-for-modding\ に unsignedhoge.apk ができる
  7. 出来た apk のファイルサイズを確認して、元より明らかに小さいようなら resources.arsc を非圧縮のものと差し替える
    1. $ 7za d -tzip .\place-apk-here-for-modding\unsignedhoge.apk resources.arsc
    2. $ 7za a -tzip -mx=0 .\place-apk-here-for-modding\unsignedhoge.apk .\project\hoge.apk\build\apk\resources.arsc

apktool.jar 単体ならこんな感じ。

  1. $ apktool.bat d SystemUI.apk test
  2. リソース書き換え
  3. $ apktool.bat b test
  4. $ cd .\test\dist
  5. $ 7za e -tzip SystemUI.apk resources.arsc
  6. $ 7za d -tzip SystemUI.apk resources.arsc
  7. $ 7za a -tzip -mx=0 SystemUI.apk resources.arsc
注意
framework-res.apk のコンパイルエラー対策はこちら
[tutorial]**Fix for recompiling framework-re… | HTC One X
invalid resource directory name なんてのが出たら
apktool.jar のバージョンと aapt (AndroidSDK に入ってる) のバージョンを確認する。

実機への転送

起動中にやってもいいですが、安全性を考えると CWM からやったほうがいいでしょう。そして転送後は cache と dalvik cache を wipe してやること。もちろんパーミッションにも注意。