ICS, JB(Galaxy Nexus(UK))のMessagingでソフトバンクのSMS/MMSの送受信を行えるようにする

追記

  • 2012/11/29
  • 2012/10/21
    • 4.1.2へのアップデート後、同様の手順を試したものの正しく動く状態を確認しました
  • 2012/07/15
    • 4.1.1 (Jelly Bean)でもほぼ同様の操作を試みたところ問題ありませんでした
  • 2012/05/07
    • 4.0.4の追加のシステムアップデート後も同作業で問題ありませんでした
  • 2012/04/04
    • 同様に4.0.4へのアップデート後も作業後問題無く使えています
  • 2012/01/16
    • Mmsをバックアップしたものに書き戻してAndroidを4.0.2にアップデート後、再度この作業を行って使用出来ました

MMSをAndroid4でも使いたい

NexusSを使っている時にアップデートの度に元に戻して、再度適用する度に手順などを調べてしまっていたので備忘録として。
今後まだ長くない間隔でアップデートがありそうなので、その度の手間が面倒+スーパユーザで使うのがせいぜいClockSyncくらいなので非rootedで適用しています。

MMSを使うのはリア充だけじゃないです。
操作ミスにより文鎮化など起こり得るため自己責任でお願いいたします。

前提作業

これは毎度必要ない。

  • fastboot-macを準備
  • adbを使える環境を準備
  • apktoolを使える環境を準備
  • autosignなどapkに署名が出来る環境を準備
  • ブート用イメージを準備
    • recovery-clockwork-5.5.0.2-maguro.img
oem unlock
  • ボリュームキーを2つとも押しながら電源ボタンを押し起動
  • oem unlockする
    • ここで本体丸ごと初期化されるので注意
$ fastboot-mac oem unlock
$ adb reboot

Mms.apkをごにょごにょする

  • Mms.apkを取り出す
    • よしなにバックアップなども
$ adb pull /system/app/Mms.apk
  • apkをデコード
$ adb pull /system/framework/framework-res.apk
$ apktool if framework-res.apk
$ apktool d Mms.apk
  • UAを書き換えて再ビルド
$ vim Mms_backup/res/xml/mms_config.xml
+ <string name="userAgent">iPhoneOS/3.0 (7A341)</string>
- <string name="userAgent">Galaxy Nexus</string>
$ apktool b Mms
  • 元のMms.apkをzipとして解凍
  • 再ビルドしたbuild/apk/res/xml/mms_configで解凍した中身の/res/xml/mms_configを置き換え
  • zipに直してMms.apkに戻す
    • ディレクトリをzipするのではなくて、ディレクトリの中身をzipして、解凍時と階層がずれないように気をつける
  • autosignなどで署名を付ける
$ java -jar signapk.jar key.x509.pem key.pk8 Mms_rebased.apk Mms_rebased_signed.apk
  • adb installなどで正しくapkとして扱われるか(エラーにはなる)を確認すると徒労が減る
    • AndroidManifest.xmlが無いと云われるときはzipの固め方がおかしい
    • signされてないと云われれば署名の仕方がおかしい

端末のMmsを置き換える

$ ./fastboot-mac boot ~/Downloads/recovery-clockwork-5.5.0.2-maguro.img
downloading 'boot.img'... OKAY
booting... OKAY
  • 端末を操作して/systemをマウントする
  • Mms.apkを書き換え
$ adb push Mms_rebased_signed.apk /system/app/Mms.apk

動作確認

  • smilemmsに繋がるAPN設定をよしなに
  • MMSの送受信を確認

わーい。