非常に簡単でしたが前身のApk Manager考察はしてますがAPK Multi-Toolの使い方をググったら無くて(´;ω;`)ブワッ
APK Multi-Toolとは、アプリをリコンパイル(オブジェクトコード(機械語)→ソースコードに変換)し、修正を加えたあとコンパイルするツールです。
なので今回はバッテリー100段階のアイコン変更する、というお題目で考察してみます。(バッテリーだけだったら素材準備して7-zipでやりゃいいじゃん、というツッコミごもっともな話w)
※APK Muiti-Toolを使うためにはAndroid-SDK環境が必須です。また修正したapkファイルを適用した時に変更に失敗してると文鎮化する可能性も高いです。十分なバックアップを強く推奨します。
■ツールを準備する■
ツールをDLし環境作るところまでまとめます
- APK Multi-Toolのダウンロードページ(http://apkmultitool.com/?q=node/5)よりファイルをダウンロード
(冒頭にAPK Multi-Tool Windows Version 1.0.6 – Downloadとあります)
#ダウンロードページの右上「ADD SKIP」で落とせます。 - ダウンロードしたexeファイルをダブルクリックし画面の指示に従いインストール、完了すると(何もチェックしなければ)APK Multi-Toolが起動します。(裏にDonate(寄付)画面が開きます。ツールを良いと思ったらぜひドネを!
- APK Multi-Tool画面で
これでインストール編は完了です。一旦「(quiet)00」(enter)で初期画面を閉じます。
セットアップをやり直したい場合はツールインストールフォルダ直下にsetup.batがありますのでダブルクリックして設定してください。
■APK Multi-Toolsの使い方■
冒頭書きました通り、お題目はXperia GXのバッテリー100段階アイコンを変更する場合を仮定したツールの使い方です。
<必要なファイル>
- SystemUI.apk
下記コマンドで端末から抜き出します。(後でAPK Multi-Toolからでも抜けます)adb pull /system/app/SystemUI.apk
<保存場所>
- Windows 7の場合
(C:¥Users¥ユーザー名) - XPの場合
(C:¥Documents and Settings¥ユーザ名)
- Windows 7の場合
- 変更したいバッテリーアイコンの準備
xda(http://forum.xda-developers.com/showthread.php?t=724778)などからお好みで
(2nd postにダウンロードするpostへのリンクあり。 DLはxdaユーザ登録必須)
#今回はVersion F Darker for Black status bar UI ROM(scbm_F_darker_white_number.zip)にしました。 - zip解凍し、中身を確認。
バッテリーファイルはxml(放充電の状況に応じた変化を司るファイル)、png(画像)で構成されています。これを差し替えます。
drawableにxmlが、drawable-hdpi-v4にpngが格納されています。
【使用方法】
- APK Multi-Toolを起動
インストールフォルダ直下の「Script.bat」をダブルクリック。こんなAA出ますのでEnter
- メニュー構成
画面はこんな感じ
- カスタムするファイルを抜き出す(まだ弄るファイルを抜いてない場合)
メニュー「0」(Adb pull)
(既に抜いている場合は、インストールフォルダ\APK_MultiTool\place-apk-here-for-moddingにコピー)
・抜くファイルを聞かれるので「system/app/SystemUI.apk」と入力しenter
・この時点で抜いたファイル名は「something.apk」なので、正しい名前に「SystemUI.apk」と入力しリネーム
・確認入るので「y」 これでリネームされます
一連のコマンドはこんな感じで流れていきます。
- 変更するapkをプロジェクトとして登録
No.23 Set current projectを選択(23と入力)しenter
今は1つしかファイルがないと思うので1→enter
- apkファイルのデコンパイル(機械語→ソースコード変換)
No.9 Decompile apkを選択しenter
APK Multi-Toolのインストールフォルダ\APK_MultiTool\projects\SystemUI.apkフォルダにソースコードレベルに分解されてたファイルが展開されます。
- ファイルの差し替え
準備した差し替え用ファイルを入れ替えます。基本はすべて上書きです。
- drawableフォルダのxml
インストールフォルダ\APK_MultiTool\projects\SystemUI.apk\res\drawable - drawable-hdpi-v4フォルダのpng
インストールフォルダ\APK_MultiTool\projects\SystemUI.apk\res\drawable-hdpi★ただしXperia NXやGXなどHD解像度の端末は
インストールフォルダ\APK_MultiTool\projects\SystemUI.apk\res\drawable-xhdpi
に入れておく(こちらを参照してる模様)
同じようにdrawableフォルダのxmlも置き換えます。
このxmlはバッテリー画像とバッテリー状態との紐付けを行う定義がされています。
放電時のバッテリー状態(実容量)に対する表示画像はたぶんごろうさんのとxdaのは同じはずですが、充電時アニメーションする場合、定義が異なるため必ずxmlも上書きしてください。(今回のごろうさんのは充電時アニメなしで、入れ替えるmodはアニメ付きなので、zzz_stat_sys_battery_1.xmlというファイルは新規扱いとなってます)画像の差し替えが完了したら次の手順へ進みます。
- drawableフォルダのxml
- アプリの圧縮レベル設定 *忘れると書き換え失敗、最悪起動しなくなるので(systemファイルは必須!)
APK Muiti-ToolのメインメニューよりNo.20 Select compression level for apk’sを選択しenter
Enter Compression Level(圧縮レベル)は「0」です。(無圧縮)
- apkファイルのコンパイル(ソース→オブジェクトコード(機械語)変換)
No.11 Compile apkを選択しEnter
2回確認が入ります。2回とも「y」+enter (システムファイルの置き換えのため2回とも「y」)
2回目のyの後にコマンドが流れ、「続行するには何かキーを押してください…」で停止。キーを押さずに次の手順へ
- 一時ファイルから書き換えたファイル削除
インストールフォルダ\APK_MultiTool\keepを開き、手順6で入れ替えたファイルを一旦削除
ココで削除したファイルがこのあとの作業で追記されます。面倒ならフォルダ以下のファイル全部消してもw - apkファイルの生成
APK Mult-tool画面に戻りenterキー。コマンドが流れてメイン画面に戻ります。
インストールフォルダ\APK_MultiTool\place-apk-here-for-moddingに「unsignedSystemUI.apk」があるのを確認。
- 現行環境バックアップ
書き換えするファイルのバックアップ及び文鎮化対策のため現在の環境をバックアップ(必須!) - 端末へファイルを送る(1)
unsignedSystemUI.apkをリネームし端末へ送り込む(スクリプト修正しないで済ませるなら)
ごろうさんスクリプト(push.bat)を編集するといいかもです。コマンドプロンプトのカレントフォルダにSystemUI.apkをコピーしておく。@echo off adb push SystemUI.apk /data/local/tmp/
- 端末へファイルを送る(2)
端末で設定するためのスクリプト(readme_tkymgr.txt)も使用させてもらいます。adb shell su に続き以下のコマンドをコピペ sync;sync;sync; /data/local/tmp/busybox mount -o remount,rw -t ext4 /dev/block/mmcblk0p12 /system dd if=/data/local/tmp/SystemUI.apk of=/system/app/SystemUI.apk chown root.root /system/app/SystemUI.apk chmod 644 /system/app/SystemUI.apk sync;sync;sync; /data/local/tmp/busybox mount -o remount,ro -t ext4 /dev/block/mmcblk0p12 /system
- 端末reboot
下記のようになれば成功です!ちゃんと充電時にアニメーションしてます♪
もし書き換えに失敗しているとステータスバーが表示されなくなるかも。
そうなってしまったら元のSystemUI.apkを送り込めば復帰できると思います。
#framework-res.apkだと起動しなくなる(=いわゆる文鎮化)場合も。。
■(参考)7-zipでの画像のみ差し替え方法■
冒頭書きました通り、アイコンの差し替えだけなら7-zipと素材画像だけあれば十分対応できたりします。
- SystemUI.apkをPCにコピー
- SystemUI.apkを右クリック>7-zip>展開>展開場所指定で分解
- ファイルの構成、中身を確認し必要な画像を準備しておく
- SystemUI.apkを右クリック>7-zip>開く
- 画像フォルダ(\SystemUI.apk\res\drawable-xhdpi\など)に差し替えたい画像をドラッグし、上書き確認でOK
- 7-zipを閉じる
- ファイルを送り込む
これで画像だけであれば差し替え可能です。
ちょっとややこしい手順かもしれないですが、いつも「クレクレ君」になってた人も自力でやってみて、自分好みのアイコンに変更できると更に愛着が増すと思いますよ。こうして端末のカスタムが楽しくなっていくと次第にハマってくるわけです、はいw
もし失敗してもFlashtoolでftf焼けば復活できますし(userdataをwipeしなければ環境残したままシステムファイルだけ初期化できます)
お騒がせしました。上記コンパイルの件、削除願います。
原因が分かりました。xml編集の際、要らぬ空白行を設けていたみたいです。
logを見て、メモ帳で見比べてて、分かりました。
ワードパットでするもんじゃないですね。
ただ、圧縮比を「0」にしていますが、元ファイルよりも700kbも小さい。。。orz