いろいろ調べていくと、XperiaとXperia arcのframework-resの中身の構造がぜんぜん違うことが判明。しかしarcのカスタムに書けるための時間をhtc Desire HDにかけてしまってちょっとだけ放置プレーになってしまい…^^;
以下にバッテリーアイコンのテンプレートから自分の好きなアイコンを用いてバッテリー100段階表示をするための手順を考察します。
本考察の手順を一つでも間違えるとXperia arcが起動しなくなります。その状態でdocomoショップに持ち込んでも保証対象外のため、自腹修理(もしくは修理すら受け付けてもらえない)となるという完全自己責任の作業となります。
導入する場合はこのリスクを十分理解して進めてください。この考察により生じた一切の不具合に関しては当ブログ及び当方は一切責任を負いません。予めご了承ください。もし起動しなくなってしまったらこちらの考察を参考に各自復旧に努めてください。絶対にdocomoショップを頼らないでください。
もし起動しなくなってしまったらこちらの考察を参考に初期化してください!
◆バッテリー表記を変更する、とは◆
Xperia arcに限らず、Android端末ではOSの上で画像を表示させるために「framework-res.apk」というファイルが必要です。
どのアプリケーションでもこのframework-res.apkがあったりしますが、バッテリー表記や3Gやwi-fi・GPSのアイコン(ステータスバーの右側に並ぶアレ)はOSが必要とするファイルであるため、その他関連するOSのファイルとの整合性が取れなくなるとOSの起動に影響を及ぼすため、最悪起動しなくなる(=いわゆる文鎮化)という重要な役割のファイルを弄ることになります。
ちなみに一般的なアプリケーションで持つframework-res.apkのカスタムに失敗してもアプリが起動しなくなるだけで済みますが、今回のはOSが起動しなくなるため、最新の注意を払って作業を行う必要があります。
◆準備するもの◆
- WindowsPC(XP SP2以降、Vista、7) /Linux *MacはNG
- Apk Manager(使い方はこちらで考察済み) *要xdaユーザ登録
もしくは7-zip *7-zipではxmalの編集、ファイルの内容確認は不可。 - lhaz (無くてもいいけどあったほうが分かりやすいので)
- UOT Kitchenで事前に作成したzipファイル(使い方はこちらで考察済み)
- root化したXperia arc
Root Explore(有料)などシステムファイルを弄れるアプリ
もしくはAndroid SDK環境 (adb pullで元のframework-res.apkを落とす)
◆7-zipによるバッテリーアイコンの差し替え作業手順◆
ホントは下のApk Managerで書き換えしたかったのですが現状うまくいかず。arcで100段階化されたファイルを見つけ自分の置き換えたかった画像に差し替えて当面は運用することにしました。
(完成後のframework-res.apkをここに置いておきます。*zipに圧縮していますで解凍してください。)
- Xperiaを
Titanium Backupでバックアップする。(現時点ではxRecoveryがないのでこれで) - xdaなどからバッテリーアイコンを探してPCにDLしておく。もしくはUOT Kitchenで自分で作成。
例:http://forum.xda-developers.com/showthread.php?t=724778 - WindowsPCで元のapkファイル(上記のだとDL_framework-res.apk)を右クリックし7-zip>開くを選択
- 7-zipで開くとこんな感じに。
- バッテリー画像は以下のフォルダにあります。
- 手順2で準備したバッテリー画像とファイル名称が同一であることを確認し、このウインドウにドラッグ&ドロップ。確認表示が出るので「はい」をクリック。
(上書き確認ではないので、違う画像を追加したりすると起動しなくなる可能性もあるため慎重に! - ファイルの置き換えが完了したら7-zipを×で閉じて終了する。
(ファイル名称はこのままにしておいたほうがいいです) - DL_framework-res.apkファイルをSDカードの任意の場所へコピー。
- ★以降、失敗すると起動しなくなる作業となりますので慎重に!!◆
(1)Xperia arcで Root Exploreを起動、system\framework\フォルダにあるframework-resファイルをコピーし、SDカードの任意の場所にバックアップを取る。(2)コピーしたフォルダのDL_framework-res.apkを長押ししCopy
例:/sdcard/任意のフォルダ/DL_framework-res.apk(3)root Exploreで、system\framework\ の下に行き、右上のMount R/WをタップしMount R/Oに。
(4)frameworkフォルダが開いた状態で「Paste」をタップ。
(5)*重要*DL_framework-res.apkを長押ししパーミッションを644に変更(画像のとおり)
(6)DL_framework-res.apkをframework-res.apkにリネーム
(7)framework-res.apkが2つ並んだ状態になります。ここで電源長押しして電源切ります。
この段階でエラーがたくさん出た場合は何かしら手順を間違えています。落ち着いて(1)でバックアップした元のframework-res.apkをsystem\frameworkフォルダへ戻します。エラー出た状態で電源切れたらたぶんarcは起動しません。その場合はこちらで考察したSEUSでの初期化が必要になります。
◆Apk Managerによる作業手順◆
※以下はApk Managerを用いての変更を自力でやろうと思ったのですがどうしてもframework-res.apkのファイル容量が小さくなりうまくいきません。手順と変更するファイルには間違いないはずなのですが、どうしてもうまくいかない… 以下に詳細の手順を残しますのでどこか間違ってるところを見つけた方、ぜひ教えていただけませんでしょうか。m(__)m
→さっそくコメントいただきまして、コンパイルする前に圧縮度を調整するNo.19の存在を教えて頂き実施してみました!が、、、xmlが圧縮されたままなのでたぶんこのまま適用しても起動しなくなる可能性があるっぽいです、、(怖) もう少し粘ってみます。qqky3fw9(skal28)さんありがとうございました!!
Xperiaを
- 【標準】
Xperia arcの標準framework-res.apkを抜き出す。
<場所>System\framework\framework-res.apk
apkを長押しし「copy」>SDカードの任意の場所で「Paste」、階層を上がるには一番上の「..」を選択 - 【標準】
抜き出したframework-res.apkをPCの任意の場所へコピー
(標準のファイルは大事に保存しておく) - 【標準】
framework-res.apkをlhazで解凍しファイルの構成を確認(のみ)。実際はApkManager側で差し替える。- バッテリー画像
\framework-res\res\drawable-hdpi-v4\stat_sys_battery_0.png~stat_sys_battery_unknown.png
の28ファイル - xml(定義)ファイル
\framework-res\res\drawable\stat_sys_battery.xml ・ stat_sys_battery_charge.xmlの2ファイルがあることを確認。
- バッテリー画像
- 【UOT】
UOT Kichenで生成されたzipファイル(UOT-00-00-00-00-0.zip)をlhazとかで解凍。
framework、META-INFという2つのフォルダができます。frameworkフォルダにはframework-res.apkがあります。 - 【UOT】
framework-res.apkをlhazで解凍しファイル構成を確認。- バッテリー画像
\framework-res\res\drawable-hdpi-v4\stat_sys_battery_0.png ~stat_sys_battery_unknown.png
の204ファイルが100段階用ファイル - xml(定義)ファイル
\framework-res\res\drawable\stat_sys_battery.xml ・ stat_sys_battery_charge.xmlの2ファイルがあることを確認。
- バッテリー画像
- 【標準】【UOT】
Apk Managerフォルダを参照、place-apk-here-for-moddingフォルダにframework-res.apkをコピー。
UOTのframework-res.apkを「UOT_framework-res.apk」などに名前を変えてplace-apk-here-for-moddingフォルダにコピー。 - 【UOT】
UOT_framework-res.apkを最初に実行する。(重要!)
Apk Managerを起動(Script.bat実行) - 【UOT】【標準】
(1)No.22 「Set current project」を選択しEnter>セットしたapkの番号を選択(UOTを先にやる必要があるので2)しEnter押下し初期画面に
(2)No.9 「Decompile apk」を選択しEnter>少し待つと初期画面に戻るので、Apk Managerのprojectsフォルダにframework-resフォルダが出来ているのを確認する。(通常解凍したときにできるMETA-INFという定義フォルダがない) - 【標準】
標準framework-res.apkを手順8のとおり(選択するファイルは1ね)実行する。下記は両方とも実行した状態。 - 【標準】
差し替えが完了したらApk ManagerよりNo.19 Select compresion level for apk’sを選択しEnter
Enter Compression Level (0-9):と出ますので無圧縮である「0」を選択。 - No.11 「Compile apk」を実行。
画面下部に「Building Apk」と表示されるので3分ほど待つ。
途中「Is this a system apk (y/n)と聞かれるので「y」選択しEnter、再署名に関する質問があるのでこちらも「y」選択しEnter、「Everything is OK.」と出たときに、Apk Managerのフォルダに「keep」というフォルダが生成されます。この段階で下記手順11を実施します。 - 【標準】
手順8で解凍したUOT Kitchen側のframework-res>フォルダより標準のframework-resフォルダに必要な画像を差し替える。- バッテリー画像
\framework-res\res\drawable-hdpi\stat_sys_battery_0.png~stat_sys_battery_unknown.png
の28ファイル
※バッテリー画像はもともとファイル名が違うので標準frameworkの28ファイルは削除(念のため別場所退避)する。
(UOT生成ファイルに差し替え:204ファイル) - xml(定義)ファイル
・\framework-res\res\drawable\stat_sys_battery.xml
・\framework-res\res\drawable\stat_sys_battery_charge.xml
(100%になってない→100%表示化)
※keepフォルダの状態でxmlファイルは確認できません。projectフォルダ内のxmlを確認します。
- バッテリー画像
- 【標準】
Apk Managerの画面に戻る。
画面の最後に「続行するには~」となってるのでEnterを押すとファイルの書き換えが自動的に行われ、初期画面に戻ります。Apk managerを確認すると「unsignedframework-res.apk」が生成され初期画面に戻ります。
unsignedframework-res.apkをリネームしてXperia arcのsystem\framework\に入れ、パーミッションを「644」にすればいいはず、なのですが、unsignedframework-res.apkのファイル容量が6MB程度であり、元のより減ってる。。。
画像を増やしてxmlも容量が増えているにも関わらず、、、
圧縮の方法も教えて頂いたhttp://www.gorochan.net/2011/01/369/を見て実行しました。しかしxmlはちゃんと書き換わってますが、圧縮されてしまう。。。(xmlとresources.arscは7-zipで差し替えするしか無い??)
resources.arscはどれを使えばいい? UOTとかで生成された物?? んー、、どうにもうまくいかない。
きっとどこか間違ってるんだと思ってますが、自分には捜しきれず。すごく初歩的なところを間違えてるような気もする。。。
もしどなたか原因突き止めちゃったよー!って方がいらっしゃいましたらこっそりでもいいので教えてください。どうぞよろしくお願いします!