【HTC J】バッテリー100段階mod完成&公開

@koron393 さんのアドバイスによりようやく完成しました。
結論だけ言うと、「SystemUI.apk」の編集だけでOKのようです。

apkの編集を簡単に箇条書きメモを書いておきます。
使うのは、deodexしたSystemUI.apk  (deodexの必要性は未検証)

■必要な環境 :7za と java と apktool が入っている必要があります。

1.apktool_1.4.1.jar でdecomplie/complieする

(1) apkを展開

$ java -jar ../apktool_1.4.1.jar d -s SystemUI.apk

(2) 必要なxmlとアイコンを、SystemUIディレクトリに詰め込む
(drawableにstat_sys_battery*.xml、drawable-hdpiにbatteryアイコンを)

(3) build

$ java -jar ../apktool_1.4.1.jar b SystemUI

2.完成品を7zaで詰め込む

08/15更新:7zaで追加する場合は、resまるごと追加に変更。

$ cp SystemUI.apk SystemUI
$ cd SystemUI/build/apk/

$ 7za a -tzip -mx=0 ../../SystemUI.apk resources.arsc

7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7zip Version 9.20 (locale=C.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)

Scanning
Updating archive ../../SystemUI.apk
Compressing  resources.arsc      

Everything is Ok

$ 7za a -tzip -mx=0 ../../SystemUI.apk res

7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7zip Version 9.20 (locale=C.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)

Scanning

Updating archive ../../SystemUI.apk

Compressing  res/drawable-hdpi/stat_sys_battery_0.png      
Compressing  res/drawable-hdpi/stat_sys_battery_1.png      
Compressing  res/drawable-hdpi/stat_sys_battery_10.png      
Compressing  res/drawable-hdpi/stat_sys_battery_100.png      
Compressing  res/drawable-hdpi/stat_sys_battery_11.png

Everything is Ok

これで完成品が ../../SystemUI.apk にできるので、CWMなりで
pushしてあげればOK

ex)
$ adb pull /system/app/SystemUI.apk SystemUI.apk_bk
$ adb push SystemUI.apk /system/app/
$ adb shell chmod 644 /system/app/SystemUI.apk

$ adb shell ls -l /system/app/SystemUI.apk*

■Version S, Stock sense 

半透明ステータスバーだと色付きが似合わない??
SystemUI-stocksense
renameして使って下さい。

アイコン別のものを使用したい人は、このSystemUI.apkのアイコンを、
入れ替えるだけで簡単に作り変えが可能かと思います。

res/drawable-hdpi/ の下にアイコンいれて以下実行するだけ。
$ 7za a -tzip -mx=0 SystemUI.apk res/drawable-hdpi/stat_sys_battery_*
(上で公開しているのば充電時も100段階なので、それ以外の場合は最初から作り直しです)

■関連記事■

同じHTC Jでの対応方法を細かく書かれているのでこっちの方が、
分かりやすいかもしれません。

バッテリー残量100段階表示mod
http://d.hatena.ne.jp/korokorokoron/20120813#1344836654

2.05.970.3適用後のStockSenseアイコンです 更新@2012/10/13

作成しましたっ。⇒ SystemUI-2.05.970.3-Stocksense.zip


【HTC J】バッテリー100段階mod完成&公開” への13件のフィードバック

  1. >AZさん

    コメント有難うございます。smali改造まで・・さすがです。
    まさに執念ですね・・。

    折角、方法書いて下さったので、本文にdiff載せて良いですか?
    って差分が68ヶ所もありますね。。。凄い!

    1. >morimoriさん

      >折角、方法書いて下さったので、本文にdiff載せて良いですか?
      どうぞどうぞ~!

      >って差分が68ヶ所もありますね。。。凄い!
      いや~68ヶ所、へへ・・・っそんな訳あるかーと思って見なおしてみたら、無意味なターゲット名の置換したままでした。dex化の時点で全く同値になりますが。。。.odexに気づいていなかった時の無意味な変更です(汗

      ↓が最小の変更です!
      http://db.tt/5z8MkLfx %5Bmod%5DBatteryController.zip
      こっちでもう一度diffチェックしてみて下さい。かなり減ってるはずです。
      空行を含め無いとすると、3行追加・1行追加・3行削除です。

      因みにツールによる表示の違いかもしれませんが、前にupした方でも差分32箇所(空行含)だったんですよね。stat_sys_battery.xmlなどのファイル指定が/res/values/public.xmlのidを用いたものになっているので、それも違ってしまっているかもしれませんね。idの部分などは変えてませんので、人それぞれそのままでということになりますね。

      私のファイルでは、
      "0x7f020181"が"stat_sys_battery"、
      "0x7f020193"が"stat_sys_battery_charge"です。

      私の元ファイルも見てもらえば良いのか、と今気づきました。
      http://db.tt/vLplkkO0 [org]BatteryController.zip

  2. >AZさん

    Full時のアニメは別なのかもですねぇ。
    100張り付きで動作しないのかもしれないですね。
    android:maxLevel="101" が動作してないのかな。
    (特に100の状態にしておくこともないので気にしてませんでした。

    #修正方法わかったら教えて!w

    1. >morimori様
      お世話になっております!
      同じ志をもった人は居ましたが(http://forum.xda-developers.com/showthread.php?t=1073250)解決法がネット上に転がってない見つけられない!!?? 私とこの人が小さいこと気にし過ぎ??w

      仕方なく.dexを展開して展開して"battery"で検索したら、原因っぽいのは結構あっさり見つかったのですが、プログラミングなんてC言語のルンゲ・なんちゃら法以来で・・・

      .javaを読んで修正箇所に見当をつけたところまでは順調だったのですが、smali様が全くまるっとちんぷんかんぷんで時間が掛かってしまいました。
      なんとか読んだものの上手くいかないのをsmaliさんと分かり合えない私の力不足と思い苦しんでいたら、/system/app/SystemUI.odexを残したままで、修正が反映されていなかったという。。。

      前置きが長くなりました。出来ました。deodexed SystemUI.apkをapktoolオプション無しでデコンパイルした中の、
      smali/com/android/systemui/statusbar/policy/BatteryController.smali
      の編集でいけました。androidのデフォルト(推薦?)はプラグに繋がっているかいないかでstat_sys_battery.xml とstat_sys_battery_charge.xmlを切り替える様になってるみたいですが、
      HTCは何故か充電中(2)→_battery_charge.xml、放電中(3)・非充電中(4)・充電フル(5)→_battery.xmlに。。。

      この条件分岐を(2)・(5)で_battery_charge.xmlになるように書き換えました。
      BatteryController.smali内部の".line 103"ブロックと".line 106"ブロックあたりとif-**に付随する:ターゲットです。

      コードは、、、いいですね。

      編集後BatteryController.smali
      ttp://db.tt/2NUK5ukV

  3. 何度もスミマセンorz <code>~</code>でもxmlの半角カッコはダメなのですね、無知なもので。
    <item android:maxLevel="101">
    <animation-list android:oneshot="false"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:duration="1000" android:drawable="@drawable/stat_sys_battery_charge_anim100" />
    <item android:duration="1000" android:drawable="@drawable/stat_sys_battery_charge_animfull" />
    </animation-list>
    </item>

  4. あら、タグと認識されて数カ所消えてしまいました。こうかな!?
    stat_sys_battery_charge.xmlの<item>最終ブロックは、~

  5. 先日はありがとうございましたm(_ _)mコメント頂いておかげ様でエラーなく使えております。

    またまたバッテリー表示なのですが、「充電フル」時に設定したアニメーションが反映されない気がします。morimoriさんは如何でしょうか。システムの仕様・・・?

    具体的には、99%までは充電アニメーションが反映されるが、100%になるとstat_sys_battery.xmlのmaxLevel="100"で指定した画像単一表示になってしまっているのです。。。

    stat_sys_battery_charge.xmlの最終ブロックは、SystemUI-2.05.970.3-Stocksenseやscbm_E_grey (2.05.970.3 Version)と同じ↓です。maxLevel="100"は消して99の次を101にしてます。

    一応編集なしのscbm_E_grey (2.05.970.3 Version)をそのまま入れてみましたが、やはり上記コード部分のアニメーションは出ませんでした。
    使用上は特に問題ないのですが、折角stat_sys_battery_charge_animfull.pnpも入っているから表示させてあげたいなと思いまして。
    お時間あるときで良いのでお願いします。

  6. いつも参考にさせていただいております。
    バッテリー100段階SystemuUI.apk導入後、再起動の度
    「System UI突然停止しました。エラーレポートを~」が表示されますが、上手く行っていればこのエラーは出ないものでしょうか。

    バッテリーの100段階表示は出来てます。タスクキーの動作をメニュー、長押しで最近使用したアプリケーションに設定していますが、長押しすると100%上記と同じエラーが表示され最近使用したアプリケーションが使えません。

    もし原因や心当たり、確認するべき事などがありましたら教えて頂きたいです。m(_ _)m
    2.05.970.3です。

    1. >AZさん

      System UI突然停止しました~が出る場合は失敗している可能性が高いです。

      考えられるのは、SystemUI.apkのパーミッションが644になっていない事、
      SystemUI.deodexファイルが残ったままになっていること、
      /data/dalvik-cache/のキャッシュが悪さしている可能性・・です。

      どのSystemUI.apkを入れたか教えて頂けると嬉しいです(確認します。

    2. ごめんなさい、自己解決しました。
      「【HTC J】バッテリーアイコン各種セット (丸っぽいの)」の記事のscbm_E_grey (2.05.970.3 Version)をそのまま入れた所大丈夫だったので、scbm_E_grey (2.05.970.3 Version)を再度decomplie→編集→complieでうまく行きました。
      どうも最初のコンパイルの時どこかミスしていたようです。コメント欄汚してスミマセンでしたー><

      この記事の手順が必要十分かつSimpleでわかり易かったです!ありがとうございました!

  7. お世話になっています
    こちらのSystemUI-stocksenseを愛用していたのですが、
    2.05.970.3版の対応をしていただけないでしょうか

コメントする

メールアドレスが公開されることはありません。