Nexus 4 アンテナピクト(失敗編)

bmobileのデータ通信専用SIMをNexus 4に差すと未だにアンテナピクトが表示されないのでシステムファイルをいじってみた。
結果はまぁ、失敗なんだけど(´・ω・`)

準備

必要なツール類をこちらのブログで公開されているZIPから借用。
LifeScape: Galaxy Nexus(SC-04D)用 セルフスタンバイ対策ツール(root不要)

修正作業

Android4.2.1なNexus 4でいじる対象は「telephony-common.jar」「telephony-common.odex」。
基本的にはrunme.batの順で進めてみた。

/system/frameworkのコピー

tempディレクトリを作成して基本この中で作業。

> mkdir temp
> cd temp
> adb pull /system/framework
コンパイル
> java -jar ..\baksmali-1.4.1.jar -x telephony-common.odex

これでtemp\outディレクトリにソースファイルが展開される。

GsmServiceStateTracker.smaliの修正

ブローヴちゃん: Android + b-mobile データ専用 SIM で電界強度を表示する
こちらのブログを参考に修正。

  • 3966行目::pswitch_1b → :pswitch_1c
  • 3976行目::pswitch_1b → :pswitch_1c
コンパイル
> java -jar ..\smali-1.4.1.jar --api-level 17 -o classes.dex out

temp\classes.dexが作成。
telephony-common.jarにclasses.dexを挿入。

> copy telephony-common.jar telephony-common.jar.org
> ..\7za a -tzip -mx0 telephony-common.jar classes.dex
odexの作成

ここから端末内での操作。
作業ディレクトリはtempディレクトリの外。

> adb push temp\telephony-common.jar /data/local/tmp
> adb push dexopt-wrapper /data/local/tmp
> adb shell chmod 755 /data/local/tmp/dexopt-wrapper
> adb shell cd /data/local/tmp; ./dexopt-wrapper telephony-common.jar telephony-common.odex

リカバリモード(cmw)で作業しているとdexopt-wrapperでの処理に失敗するので、端末は通常起動してる状態で行う。

著名のコピー&差し替え

作成したtelephony-common.odexにオリジナルの著名をコピーする。
ここでリカバリモード(cmw)を起動。
/dataと/systemをマウント後

> adb push busybox /data/local/tmp
> adb shell chmod 755 /data/local/tmp/busybox
> adb shell /data/local/tmp/busybox dd if=/system/framework/telephony-common.odex of=/data/local/tmp/telephony-common.odex bs=1 > count=20 skip=52 seek=52 conv=notrunc

著名をコピー。
すでにbusybox導入済みの場合は、適度に読み替えてコマンド実行。

> adb shell cd /data/local/tmp; busybox cp telephony-common.odex /system/framework/telephony-common.odex.new
> adb shell mv /system/framework/telephony-common.odex /system/framework/telephony-common.odex.old
> adb shell mv /system/framework/telephony-common.odex.new /system/framework/telephony-common.odex

オリジナルのodexファイルをリネームして差し替え。

再起動

dalvik-cacheをクリアしてから再起動。


結果、アンテナピクトは表示されず…。
これ前からずっと言われてるけど、GoogleはどうしてMVNOのSIMの時データ通信なしにしたままなんだろか。