Galaxy Nexusのセルスタンバイ対策をやってみる

Google公式のグローバル版ファームウェアであるAndroid 4.3(JWR66Y)のセルスタンバイ対策を何となくやってみた。

対策前

IIJmioのデータ通信専用SIMでデータ通信そのものは問題なく可能だけど、アンテナピクトやデータ通信ピクトは白い三角の枠のみで何も表示されず、キャリア等の表示も緊急通報のみ-NTT DOCOMOとなっている。クイック設定パネルのモバイルネットワーク表示は白い三角の枠のみで通信サービスはありませんと表示されている。また、電池のセルスタンバイの圏外時間が100%となっている。

対策手順

Galaxy Nexusブートローダーモードで起動してAndroid SDKがインストールされたPCとUSB接続して、以下の手順でframework-res.apkのbools.xmlにあるconfig_voice_capableをtrueからfalseに書き換えることで通話機能を無効にする。必要なファイル群はコマンドを見て適宜予め準備しておく。

  1. fastboot boot recovery-clockwork-6.0.4.7-maguro.img」でCWMを起動する
  2. CWMが起動したら「mounts and storage」→「mount /system」→「+++++Go Back+++++」で/systemをマウントする
  3. 「adb pull /system/framework/framework-res.apk」でframework-res.apkをPCに転送する
  4. java -jar apktool_2.0.0rc4.jar d framework-res.apk」でframework-res.apkを展開する
  5. メモ帳などで「framework-res\res\values\bools.xml」の「true」を「false」に書き換える
  6. java -jar apktool_2.0.0rc4.jar b framework-res」でframework-resを再生成する
  7. 「COPY framework-res\build\apk\resources.arsc」で再生成されたresources.arscをカレントディレクトリにコピーする
  8. 「COPY framework-res.apk framework-res.zip」でframework-res.apkをzipファイルとしてカレントディレクトリにコピーする
  9. 7za u -mx=0 framework-res.zip resources.arsc」で7-Zipコマンドラインバージョンを使ってframework-res.zipにresources.arscを無圧縮で上書きする
  10. 念の為に「zipalign -f 4 framework-res.zip framework-res_new.apk」で32ビット単位の位置合わせを行う(しなくても、まあ大丈夫だと思う)
  11. 「adb push framework-res_new.apk /system/framework/framework-res.apk」で書き換えたframework-res.apkをGalaxy Nexusに転送する
  12. 「adb shell chmod 644 /system/framework/framework-res.apk」でframework-res.apkのパーミッションを正しく設定し直す
  13. CWMから「reboot system now」→「No」で再起動する

対策後

アンテナピクトは電波強度が正しく表示され、アンテナピクト左上にデータ通信ピクトの「H」や「3G」などが表示され、キャリア等の表示もNTT DOCOMO-NTT DOCOMOとなっている。クイック設定パネルのモバイルネットワーク表示は白い三角の枠のみで緊急通報のみと表示されている。また、電池のセルスタンバイの圏外時間は表示されていない。

復旧手順

元のframework-res.apkをGalaxy Nexusに転送して上書きし、パーミッションを644に設定し直す