2012-04-01 (日)
*[Android] b-mobileでちゃんとアンテナ表示する
DesireのHTC Senceを使っていたときもそうだったのだけど,データ通信専用のb-mobile simだと接続できているのに圏外表示になってしまって嫌な感じ.今までアンテナ表示するウィジェットとかでごまかしていた.
1年くらい前にも,根本的に直そうと思ってAndroidのソース追いかけてて途中で挫折してたのですが,今日ググったら解決できている記事を見つけた.
http://bl.oov.ch/2012/01/b-mobile-sim.html
GsmServiceStateTrackerの修正でいけるのか.もっと面倒な箇所を変更しないといけないかと思っていました.
というわけで,早速やってみる.先の記事では上手くいってるようなのでどうにかなるだろう.
smaliとbaksmaliの使い方はこの辺を見た気がする.昨日,CellBroadcastReceiver.apkを作るときにも使いました.
java -jar baksmali-1.3.2.jar -a 15 -x -d framework -o out framework/framework.odex ここでGsmServiceStateTracker.smali を編集する java -jar smali-1.3.2.jar -a 15 -o classes.dex out
odexなので-xを忘れないように.Android 4.0.4なのでAPIレベルが15ですが,問題なくいけました.
で,実機にframework.jarを書き戻して起動.
…起動せず.
ログを見ると,system/framework/framework.odexじゃないとだめっぽい.だめもとで,/data/dalvik-cache/以下を見てみるとdexファイルが生成されて居るのが見えるので,こいつを,system/framework/framework.odexにする.
…まだ起動せず.
DexOpt: mismatch dep signature for '/system/framework/framework.odex'
とか言われたので諦めようかと思ったけど,ダメもとでバックアップしておいたframework.odexからヘッダの署名っぽい箇所をバイナリエディタでコピーして再度配置.
起動しないだろう……と思ったけど,起動した.
アンテナも出ている.ネギアンテナは用済みです.
ついでにフォントとかもモトヤフォントにしておく.ICSはフォントファイル置くだけじゃなくてxmlに設定書かないといけないのか.
やってみると上記のようなことが起こるかもしれませんが,逆コンパイルとか禁止されてた気もするので夢の中の話です.
PCにGalaxy Nexusつないだ状態で意味もわからずキーボード叩いてたら不思議なことにアンテナが表示されてました.パソコンとかスマートフォンとかむつかしいので,よくわかりません.
追記:
非deodex環境でやってるの記事も見つけた.やり方は合っていたっぽい.
http://blog.nunnun.jp/Technology/modify_framework_odex_on_non_deodexed_rom.html