2012年2月26日日曜日

Xperia arcのICS beta ROMにセルスタンバイ対策

ICSは非deodexだから神パッチが使えなくて困ったもんだ。素人だからメモのみで(;´∀`)

必要なもの
・smali.jar
・baksmali.jar
・dexopt-wrapper

cmdコマンドプロンプトから frameworkフォルダを引っ張る
adb pull /system/framework framework
コピーされたframeworkフォルダに smali.jar と baksmali.jar をコピーして、frameworkフォルダ上で framework.odex を逆アセンブルする
java -jar baksmali.jar -c:core-junit.odex -x framework.odex
新たに作られた out フォルダの中の下記ファイルをエディタで編集
\out\com\android\internal\telephony\gsm\GsmServiceStateTracker.smali

    :pswitch_data_22
    .packed-switch 0x0
        :pswitch_1c
        :pswitch_1d ←この値に
        :pswitch_1c ←あわせる
        :pswitch_1c
        :pswitch_1c
        :pswitch_1f
        :pswitch_5
        :pswitch_5
        :pswitch_5
        :pswitch_5
        :pswitch_1c
        :pswitch_5
        :pswitch_1c ←あわせる
        :pswitch_1c
        :pswitch_1c
    .end packed-switch



    :pswitch_data_22
    .packed-switch 0x0
        :pswitch_1c
        :pswitch_1d
        :pswitch_1d
        :pswitch_1c
        :pswitch_1c
        :pswitch_1f
        :pswitch_5
        :pswitch_5
        :pswitch_5
        :pswitch_5
        :pswitch_1c
        :pswitch_5
        :pswitch_1d
        :pswitch_1c
        :pswitch_1c
    .end packed-switch

編集し終わったら、classes.dex に再コンパイルする
java -jar smali.jar -a 15 -o classes.dex out
出来上がった classes.dex を7zipで framework.jar にぶち込む
で、arcとつないで作業
framework.jar と dexopt-wrapper を仮フォルダに移す
adb push framework.jar /data/local/tmp/framework.jar
adb push dexopt-wrapper /data/local/tmp/
adb shell chmod 755 /data/local/tmp/dexopt-wrapper
dexopt-wrapperを使ってjarをodexに変換してやる
adb shell
cd /data/local/tmp
./dexopt-wrapper framework.jar framework.odex
 署名部分をオリジナルファイルからコピーする
busybox dd if=/system/framework/framework.odex of=framework.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
んで、arcの /data/local/tmp 内にある framework.odex を /system/framework/ にぶち込む
念のため、Wipe Dalvik Cache しとく


アンテナピクトが立って、圏外時間が0になった(´∀`)

参考:
Android + b-mobile データ専用 SIM で電界強度を表示する
非Deodex環境 [SO-02C] でセルスタンバイ問題を解決する 


おまけ
Wi-Fi

3G

ええい、SONYの新型はバケモノか!

4 件のコメント:

  1. java -jar smali.jar -a 15 -o classes.dex out
    ↑の-aの引数を14にしないと当方ではエラーでした。
    報告まで。

    返信削除
    返信
    1. tench@nさまの環境の、Android SDKのAPIバージョンが古いのではないかと…?

      削除
  2. この記事を読んで、ようやくセルスタンバイ対策に成功しました。
    本当にありがとうございましたm(__)m

    返信削除
  3. ありがとうございました。
    自分も、やっとセルスタンバイの対策が出来ました。(docomo,arc,android4.0.3)
    簡素(わかり易い)にまとめられており、
    どこよりも、参考になりました。

    返信削除