自分用メモ:framework-res.apkモディファイ(バッテリーアイコン)

メモ (googleさんは最高の教科書だ)

準備~Apk managerインストール
http://java.sun.com/javase/ja/6/download.htmlからJDKをダウンロードしてインストール。
XDAからApk manager 4.9をダウンロードして、適当なディレクトリに配置。
javaとadb.exeにパスが通っている必要がある。javaには通っていたが、adb.exeは通っていないので、Script.batの2行目にパスを追加。
set path=%path%;C:hogeAndroid
(「C:hogeAndroid」にadb.exeがある場合)

バッテリアイコン変更
/system/framework/framework-res.apkを再コンパイルするのだ。
> adb pull /system/framework/framework-res.apk .
このframework-res.apkをApk managerのフォルダにあるplace-apk-here-for-moddingフォルダに保存。

Script.batを起動。
Apk managerが立ち上がる(コマンドプロンプト)。
「22 Set current project」を選択。
place-apk-here-for-moddingフォルダにあるapkが表示されるので、1(framework-res.apk)を選択。
「9 Decompile apk」を選択。
Apk managerのフォルダにあるprojectsフォルダに展開されるのでその中身を変更。

バッテリーアイコンは
http://forum.xda-developers.com/showthread.php?t=724778
からゲット。私はVersion Jをいただきました。
該当するzipファイルをダウンロードしてその中身でprojectsフォルダの該当する場所にコピーします(すでに存在しているファイルは上書き)。
zip内にはdrawable-hdpi-v4というフォルダがあるが、こいつの中身はdrawable-hdpiフォルダの中へ。

コピーが終わったらApk managerの画面に戻って、「11 Compile apk」を選択。
途中でy/nの質問が2つ。
1つめは、system appかどうか?
2つ目は、変更していないファイルはオリジナルのapkからコピーして良いか?
ともに「y」と回答。
しばらくすると「何かキーを押せ」状態に。でもここでキーを押してはいけません。
Apk managerのフォルダにkeepフォルダが出来てる。これは中間生成物(オリジナルのapkの内容と同じファイル・・・多分)が入っている。
メッセージにあるように、さっきprojectsフォルダで変更したファイルに該当するkeepフォルダ内のファイルを削除する。
さらに、xmlを変更した場合にはresources.arscも削除しろ、と書いてあるので削除。
それから「何かキーを押す」。

place-apk-here-for-moddingフォルダにunsignedframework-res.apkが出来ているので、適当なファイル名に変更して端末へ。
/system/framework/framework-res.apkを上書きしてもいいのだが、もとに戻しやすいようにシンボリックリンクを使って配置する。
unsignedframework-res.apkをframework-res.custom.20110105.apkにリネーム。

> adb push framework-res.custom.20110105.apk /mnt/sdcard/
> adb shell
$ su
# mkdir /data/custom
# chmod 755 /data/custom
# cp /mnt/sdcard/framework-res.custom.20110105.apk /data/custom/framework-res.custom.apk

/systemはRead-OnlyでマウントされているのでRead-Writeで再マウント。

# mount -o rw,remount /dev/block/stl9 /system

オリジナルをバックアップしてシンボリックリンクをはる。

# cd /system/framework
# mv framework-res.apk framework-res.apk.original
# ln -s /data/custom/framework-res.custom.apk ./framework-res.apk

/systemをRead-Onlyに戻します。

# mount -o ro,remount /dev/block/stl9 /system

再起動。

# reboot

“自分用メモ:framework-res.apkモディファイ(バッテリーアイコン)” への6件の返信

  1. はじめまして
    アイコンのモディファイをやってみようと思い参考にさせて頂いていますが、Compile後のapkに変更したアイコンが存在しない状態になってしまいます。
    次の手順で実施しましたが、何か足りない手順がありますでしょうか?
     1)place-apk-here-for-moddingに元のframework-res.apkを保存。
     2)Decompile後にprojectsに出来たframework-res.apkフォルダ内の該当アイコンを変更。
     3)Compileを実行し途中の一旦停止時に出来るkeepフォルダ内の、変更に該当するアイコンを削除。
     4)一旦停止を解除してCompileを進めてapkを完成させる。

    ご指導願いたく。
    宜しくお願い致します。

  2. 同じ手順で試してみましたが、ちゃんと変更されましたよ。

    アイコンが存在しない、というのは、生成されたapkを再度デコンパイルしたら該当アイコンのpngファイルがなくなっていた、ということでしょうか。
    たとすると、可能性としては、
    ・keepフォルダとprojectsフォルダの両方から画像ファイルを削除した
    くらいしか思いつかず。
    アイコンがもとに戻っていた、というのでしたら、生成されたunsignedframework-res.apkではなく(もともとあった)framework-res.apkの中身を確認した、という勘違いですかねぇ。

  3. コメントありがとうございます。

    ・「アイコンが存在しない」というのは、生成されたapkをデコンパイルすると
     該当のアイコンが無くなっていた、と言う事です。
    ・変更したアイコンの削除はkeepフォルダのみでprojectsフォルダは
     変更した状態のまま何も触っていません。
    ・元データに対してアイコン画像の差し替えのみでありxmlも変更していないので、
     keepフォルダのresources.arscも削除していません。

    ただ1点、コンパイル時の2階の質問の前に下記のエラーが出ます。
     「An Error Occured, Please Check The Log (option 21)」
     内容を見ると千行以上にわたって、
     「libpng error: Read Error」や
     「~ error: Public symbol drawable/~」や
     「~ error: Public entry identifier ~」が記録されています。
    これを無視してコンパイルを進めました。
    (これが原因?)

    宜しく御願い致します。

  4. それじゃコンパイルが出来ていないので当然といえば当然。
    javaコマンド(Script.batの491行目か492行目)でこけているみたいですが、それ以上は不明です。
    Script.batがおかしくなっている可能性も否定できないので、Apk Managerを再度配置してみたらどうでしょう。

  5. かねぴーさん、たびたびありがとうございます。

    Apk Manegerの再配置、Java最新版のインストールなど
    色々やってみましたが状況は変わらず、errorが出てしまいます。

    コマンドプロンプトで「java」と打ってみるとUsageが出るので
    パスは通っていると思いますし、adb.exeのパスもScript.batの中に記述して通してあります。

    因みにWindows7(x64)ですが問題ないですよね。

    うーん
    何をやってもダメだ。
    環境によって、こんなにはっきりと明暗が出る物なのでしょうか?

  6. こんにちわ。
    私もWin7(64bit)なのでその点は問題なさそうです。
    android SDKは不要だと思うのですが、念のためインストールして試してみてはいかがでしょうか。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*