幸い、セルスタンバイは4~10%程度と、異様にバッテリーが減る状態ではないので、
適当な電波状態表示アプリ入れてお茶を濁していたんですが、いろいろ調べた結果、何とかなりそうだったので、何とかしてみました。
手順は、Android + b-mobile データ専用 SIM で電界強度を表示する | ブローヴちゃん とほぼ同じです。
但し、純正ROMの001HT君は、非deodex(jarとodexがペアで存在する)環境なので、 このパッチは適用できません。
そこで、いろいろな方々が公開してくださっている情報を統合して、試行錯誤してどうにかなった感じです。
思い切り自分用の備忘録なので、同じようにやっても出来るかどうかは分かりませんし、
スマホが壊れても知りません。
準備したもの:
java(1.6)
rootedでsimフリーで、ClockWorkModRecoveryが入ってる 001HT(2.3.3)
adbで接続できる環境
Android + データ専用 SIM での動作修正パッチ | ブローヴちゃん から修正パッチの最新版
まず、適当な場所にブローヴちゃんから頂いてきたパッチを展開。
中に入っているツールをありがたく利用させて頂きます。
展開すると、こんな感じになっていると思います。(20120317版)
2012/01/09 11:45 587,776 7za.exe
2012/01/09 12:17 162,816 adb.exe
2012/01/09 12:17 96,256 AdbWinApi.dll
2012/01/09 12:17 60,928 AdbWinUsbApi.dll
2012/01/21 10:52 794,321 baksmali-1.3.2.jar
2012/01/23 15:24 8,543 data-only-sim-smali-fixer.wsf
2012/03/16 23:32 12,894 execute.bat
2012/03/17 08:25 10,685 msg_en.bat
2012/03/16 11:16 10,976 msg_ja.bat
2012/03/16 23:25 1,305 recover.bat
2012/01/21 10:52 1,779,080 smali-1.3.2.jar
実機からframeworkフォルダを取り出す。
adb pull /system/framework
BOOTCLASSPATHを調べるために、init.rcを取り出す。(逆コンパイルに必要)
adb pull init.rc
init.rcから必要なjarのリストを作成する。
export BOOTCLASSPATH /system/framework・・・・・ の行を探す。
そこにjarがずらっと書いてあるので、コピペして、置換でもして/system/framework/を消す。
core.jar:bouncycastle.jar:ext.jar:framework.jar:android.policy.jar:s・・・・ こんな感じ。
framework.jar framework.odexを作業用ディレクトリへコピー
copy framework\framework.jar work
copy framework\framework.odex work
framework.odexを逆コンパイルする
java -jar ..\baksmali-1.3.2.jar -a 10 -d ..\framework -x framework.odex -c:<jarのリスト>
アンテナピクトの部分を修正する。
out\com\android\internal\telephony\gsm\GsmServiceStateTracker.smaliを編集
"private regCodeToServiceState"の100行くらい下を以下のように編集
:pswitch_data_42
.packed-switch 0x0
:pswitch_23
:pswitch_22 ← ここを見て
:pswitch_25
:pswitch_22 ← ここと
:pswitch_2d
:pswitch_22
:pswitch_8
:pswitch_8
:pswitch_8
:pswitch_8
:pswitch_35
:pswitch_8
:pswitch_35
:pswitch_22 ← ここを編集
:pswitch_35
:pswitch_37
.end packed-switch
編集が終わったらsmaliで再コンパイル。
java -jar ..\smali-1.3.2.jar -o classes.dex out
classes.dexをframework.jarに突っ込む。
..\7za u -tzip framework.jar classes.dex
で必要なものが出来上がりました。
ここからは実機のシステム領域を書き換える作業になります。
(失敗すると文鎮化するかもしれません。自分の責任下において実行してください)
実機をrecoveryで起動
adb reboot recovery
/systemをマウントしてframework.jarを置き換える
adb shell mount /system
adb push framework.jar /system/framework/
framework.odexを削除する
adb shell rm /system/framework/framework.odex
ClockworkMod Recovery のメニューから advanced を選び、Wipe Dalvik Cache を選ぶ。Wipe cache partition もやっとく。
んで再起動
※ここではまだ、ちゃんと起動してきません!!(softbankのロゴのままになる)
/data/local/tmpにframework.odexを転送しておく
adb push ..\framework\framework.odex /data/local/tmp
dalvik-cacheの中にdexファイルが出来ているので、framework.odex.newとして /data/local/tmpにコピー
adb shell
cp /data/dalvik-cache/system@framework@framework.jar@classes.dex /data/local/tmp/framework.odex.new
framework.odexの署名をnewにコピー
cd /data/local/tmp
busybox dd if=/system/framework/framework.odex of=framework.odex.new bs=1 count=20 skip=52 seek=52 conv=notrunc
実機をrecoveryで再起動
adb reboot recovery
framework.jarを元に戻して、framework.odex.newを/system/framework/framework.odexとしてコピー
adb shell mount /system
adb shell mount /data
adb push ..\framework\framework.jar /system/framework
adb shell chmod 644 /system/framework/framework.jar
adb shell
cp /data/local/tmp/framework.odex.new /system/framework/framework.odex
chmod 644 /system/framework/framework.odex
ClockworkMod Recovery のメニューから advanced を選び、Wipe Dalvik Cache を選ぶ。
Wipe cache partition もやっとく。
んで再起動すると・・・?
間違いがなければ、これでアンテナピクトが表示されるようになってるはず。
起動してこなかったら、..\frameworkのframework.jarとframework.odexを書き戻せば
元に戻ります。多分。
ああ疲れた。
0 件のコメント:
コメントを投稿