スマフォ初心者による『docomo REGZAphone T-01C であそぼう!』のブログ
リンク メール 掲示板 このブログについて Twitter T01C 取扱説明書 QLOOKアクセス解析
ステータスバーの時計文字色変更【odexを弄ってみた編】
1月 28日-Sat



あおいろ(通知領域も透過化
ベースバンドバージョン 末尾12
 




あーだこーだやってたら出来たっぽいので
一応書いておきます。


わたしが成功しただけで、
すべての T01Cでも成功するとは断言できません。

「こういう方法もあるかもよ」というだけの
一例にすぎないことをご理解ください。


実行に移す場合はすべて自己責任です。
トラブルが生じてもこちらは一切責任を負いません。




再起動ループになってリカバリーモードにも入れない、
どうしたらいいか?と
わたしに聞かれても、こちらは何も言えません。


また、他機種についてはまったく知識がないので
○○でも同じように出来るかと聞かれても
「わからない」としか言えません。



このブログに書いているのは
docomo REGZA phone T01C だけでしか試していないことです。

さらに、わたしが試しただけであり
他のT01Cユーザーさんがどういう結果になるかは
わたしには分かりませんし
責任は負わないものです。



本題に入る前にもう一度書いておきます


レグザフォンが故障する可能性があります。


root化、その後の使用はすべて自己責任です。

なにがあっても、
こちらは一切責任をおいませんし関与しません。





前置きが長くなりました。


ざっとした流れ

 必要なものを用意する
  ↓
 services.odex を展開する
  ↓
 該当箇所を書き換える
  ↓
 dex化する
  ↓
 出来上がったdexファイルを services.jarに入れる
  ↓
 services.jarからpatched.odexを作成
  ↓
 patched.odexを services.odexとして使えるようにする
  ↓
 置き換える
  ↓
 (゚∀゚)


つづきへ。








具体的な手順、というか自分用の整理メモ。


■用意&確認

┗パソコン側
   ・JDKインストール
   ・作業フォルダにパス通す
   ・adb shell環境構築


http://code.google.com/p/smali/downloads/list
↑より、以下の 4つをダウンロード
    smali-1.2.6.jar
    baksmali-1.2.6.jar
    smali
    baksmali

 ※最新版ではなく、1.2.6
   最新版だと smali化失敗しました




 smali-1.2.6.jar ,baksmali-1.2.6.jar はリネームする
   smali-1.2.6.jar → smali.jar
   baksmali-1.2.6.jar → baksmali.jar


 smali.jar,baksmali.jar,smali,baksmali
 4つのファイルは、作業フォルダに置く。




7zipのコマンドラインバージョンをダウンロード、
本体(7za.exe)も作業フォルダへ置く。
http://sevenzip.sourceforge.jp/download.html




レグザフォンから system/framework をパソコンにコピー。

  USB接続、作業フォルダで cmdを開いて
  adb pull /system/framework/ ですべてコピーされる。

  コピーされた frameworkフォルダは
  一応バックアップを残しておく。




┗レグザフォン側

root化、superuserインストール、busyboxインストール



http://forum.xda-developers.com/showpost.php?p=3864655&postcount=36
↑から dexopt-wrapper.zip をダウンロード、解凍

  dexopt-wrapper を
  レグザフォンの /system/framework/ へ送り
  パーミッション 755に設定する

  adb push dexopt-wrapper /system/framework/

  adb shell
  # chmod 755 /system/framework/dexopt-wrapper




system/framework/ 内に入り、以下の 4つのファイルをコピー。
(デフォルトのものをあとで使う)
  android.policy.odex
  android.policy.jar
  services.odex
  services.jar


 adb shell
 # cd /system/framework/
 # cp android.policy.jar original.android.policy.jar
 # cp android.policy.odex original.android.policy.odex
 # cp services.jar original.services.jar
 # cp services.odex original.services.odex




下準備おわり。




■ファイルを作る(services.odexの編集作業)


┗パソコン側

作業フォルダにすべて揃っていることを確認↓
 ・/system/framework/ のファイルすべて(ファイル数41)
 ・smali.jar
 ・baksmali.jar
 ・smali
 ・baksmali
 ・7za.exe

 例;D:\Program\odex\framework というフォルダにまとめてみた図
 





作業フォルダでコマンドプロンプトを開く


services.odexを展開する

  smali化を「展開する」と言っていいのかどうかは分からない。

java -jar baksmali.jar -x services.odex


services.odex が smali化され、 outフォルダ内に格納される。


outフォルダ内、
com/android/server/status/StatusBarIcon.smali を開き編集
(テキストエディタでOK)

 smali化したservices.odexの
 com/android/server/status/StatusBarIcon.smali 99行目を
 const/high16 v6, -0x100 → const v6, 0xff00c0c0
 にするだけなので頑張ってください。
http://anago.2ch.net/test/read.cgi/smartphone/1320709914/684



編集が終わったら、outフォルダを dex化
java -jar smali.jar out -o classes.dex

classes.dex が作成される。

これを services.jarに入れる。


7za.exe a -tzip -mx0 services.jar classes.dex



classes.dex を入れた services.jar をレグザフォンに送る。


adb push services.jar /system/framework/


adb shellを立ち上げ、su権限で
レグザフォン内 system/framewrok へ移動。

cd /system/framework


dexopt-wrapper で patched.odexを作成する

./dexopt-wrapper services.jar patched.odex


 --- BEGIN 'services.jar' (bootstrap=0) ---
 --- waiting for verify+opt, pid=****
 --- would reduce privs here
 --- END 'services.jar' (success) ---

と出たら作成完了。


作成された patched.odexに、
デフォルトの services.odexから 署名部分をコピー。

busybox dd if=original.services.odex of=patched.odex bs=1 count=20 skip=52 seek=52 conv=notrunc



署名が終わったら、
services.odex,services.jar,android.policy.odex,android.policy.jar
↑の 4つをデフォルトのものに戻す。
(original. としてコピーしておいたもの)

パーミッションと所有権も設定


mv original.services.odex services.odex

chown root.root services.odex

chmod 644 services.odex

  ↑を services.odex,services.jar,
  android.policy.odex,android.policy.jar
  4つのファイルすべてで行う。




作成した patched.odex を services.odex に差し替える。


dd if=patched.odex of=services.odex

chown root.root services.odex

chmod 644 services.odex


再起動する

reboot




おわり。


無事に再起動されれば成功  しているはず。

再起動ループになってしまったら
システムアップデートするか、

services.odex,services.jar,
android.policy.odex,android.policy.jar
をデフォルトのものに差し替えてやれば回復する  はず。


  376氏作成のカスタムカーネルを入れているなら
  再起動ループになっても
  adb wait-for-device shell stop
  とコマンド打てばループは止まります。

  adb で
  4つのファイルを送り込み、
  権限・所有権を設定して reboot

  REGZAロゴで落ちる場合は
  システムアップデートしないとだめかも。





キモは

 services.odex,services.jar,
 android.policy.odex,android.policy.jar を
 デフォルトのものに戻しておいてから、
 作成した patched.odex を
 services.odex に置き換える

というところなのかなと思いました。
確定ではないのですが
とりあえずはこの方法で成功してます。


いくつかのサイトでは
patched.odexを置き換えたあとに
*.jarをデフォのものに戻す流れでしたが

レグザフォンでは
*.jar を先にデフォに戻してやった方がいいみたい。


デフォルトのものから変わっているのは
services.jar だけなんだし、
↑だけを戻せばいいんじゃねーの?と思うのですが

services.jar だけをデフォルトに戻す
 ↓
services.odex置き換える
 ↓
reboot ..の流れでも docomoロゴで電源落ちました。

なので、面倒ではありますが
面倒なら面倒ついでに
4つともデフォルトに戻しておいてから、
patched.odex を
services.odex にする方法がよろしいかと思われます。

ここで延々と引っかかっていたわけでした… _/>。



作業が完了したら、作成した patched.odexは消してOK。
REで消すなり、rm patched.odexするなりで。

/data/dalvik-cache/ に services のなにか(classes.dex? が
作られて残るってこともないみたいです。今んとこ。






dexopt-wrapper のコマンドは

./dexopt-wrapper 作成元jar 作成(出力)するファイル.odex [PATH]
という形式らしく、

android.policy.odex とか作るときには
PATH(BOOTCLASSPATH)を設定する必要がある(らしい)のですが
services.odex では設定してやらなくても大丈夫っぽい。

厳密に言えば大丈夫なのかどうか分からないです。
まぁ、これで一応成功してるので良しとしております。

  らしい、とか っぽい、とか
  憶測ばっかりでスミマセン。



通話、通信(Wi-Fi、3G)、GPSともに問題なく使えてます。
とはいえ
今後なにかしらトラブルが起こる可能性もゼロではない。






/system/framework/ 内のファイルが
デフォルト状態(なにも弄っていない状態)じゃなくても
この方法でいけるのか?と疑問も残る。

android.policy.odex を弄ってある状態でやってみた結果、
一応は成功。
だからといって、
どのファイルをどんなふうに弄ってあっても大丈夫だという理由には
なりえないのであしからず、です。



jar本体以外に smali と baksmali は必須かどうかも、
調べるの忘れてました。




色自体は、const v6, 0xff00c0c0 の部分の
ff00c0c0 6桁を好きなカラーコードにしました。




通知領域背景の透過について。

同じく、376氏が IS04スレで書かれていた方法でいけました。
http://anago.2ch.net/test/read.cgi/smartphone/1322109514/990






あーだこーだやって結構タイムロスあったけど
なんとか着陸。
先人様方、そして376氏に心から感謝します。ありがとうございました。


ここでも書きますが

これをやって「必ず成功する」とは断言しません。できません。
実行する場合、というか root化する時点で自己責任です。






classes.dex を入れる先の *.jar は
*.odex とは別名にしても大丈夫らしいけど
それもまだ試してなかった。試したら追記します。

android.policy.odex を弄ったらロックスクリーンを変えられる?
との記述も目にしたので
いつかチャレンジしてみたいです。

いつの日にか・・・。。。(´-ω-`)イツカ。。。



このエントリーをはてなブックマークに追加
コメント投稿の受付は終了しました。
★最新記事
★タグ一覧
regzaphone... (43)
アプリ... (78)
スクリーンショット... (14)
ツール... (28)
ホーム画面... (14)
壁紙... (12)
着信音... (4)
要root... (57)
カスタム... (38)
入れてみた... (41)
接続... (2)
音楽... (8)
BWスキン... (2)
google... (9)
Metamorph... (8)
Twitter... (2)
UOHkitchen... (5)
こまごま... (5)
その他... (57)
アップデート... (8)
ウィジェット... (26)
ゲーム... (1)
サッカー... (6)
セキュリティ... (5)
ニュース... (1)
メール... (5)
ランチャー... (1)
動画... (2)
自分用メモ... (34)
chronotopia... (4)
環境構築... (2)

壁紙ギャラリー
★月別アーカイブ
March_2013... (1)
November_2012... (1)
October_2012... (1)
June_2012... (3)
April_2012... (4)
March_2012... (7)
February_2012... (8)
January_2012... (8)
December_2011... (4)
November_2011... (8)
October_2011... (5)
September_2011... (11)
August_2011... (7)
July_2011... (10)
June_2011... (24)
May_2011... (22)
April_2011... (16)
March_2011... (20)
February_2011... (26)
January_2011... (35)
December_2010... (2)
★コメントThank you!
marimo... 1/20
管理人... 1/13
dmc... 1/7
管理人... 12/5
ゆうたぱぱ... 12/4
管理人... 12/2
とーちゃん... 12/2


ばじとうふう
 ...本家ブログ。アルビ愛
にほんブログ村
 ...ランキングに参加しています


QLOOK BLOG

RSS/ ATOM