2010/7/3 Mms.apk.jakeMod11アップしました。
Softbank X06HT(HTC Desire)の登場で、思わず衝動買いしそうになりつつ、ネットを調べるとどうもSIMフリーを海外から購入したほうが(エンジニア魂をくすぐる問う意味で)いろいろお得感が大きいという結論になり、さっそく購入しました。在庫有りだったためなんと香港からFedexで1日で届いてしまいました。
Softbankのアナウンスでは当初はMMSやメール送受信(Y!メールという?)はできないということでしたが、なんのそれくらいいいやと踏んでいたところ、それがいかに足かせになろうとは思ってもいませんでした。いろいろ触るうちに、どうしてもこれをメインの携帯として使いたいという欲がムラムラとこみあげてきて、ついに意地でもMMS対応させようと HTC DesireのROOT化、Andoid標準のメッセージソフトの更新に踏み込みました。
Android OS 2.1に関する話題はいろんなところでされているので、ここでは私個人の都合状どうしてもやらなければならなかったことをメモとして残しておこうと思います。
SMS/MMSにまつわる解決できなかった問題
- UserAgent問題
当初、SoftbankのMMSの接続ができない問題が持ち上がったときにこの UserAgent の偽装をおこなうことで送受信できるようになるといわれました。そこで、各所でUserAgentを選択的に偽装できる修正がなされたMms.apk ファイルが作られて配布されました。が、後に続く問題のために、どうしても実用的なレベルに使用できませんでした。
- 本文に漢字が含まれるとメッセージが届かなかったり、件名と本文がぶっ飛んだりしてしまった
メッセージが通知もされず届かないという問題は致命的でした。
- 画像などの添付ファイルがあるとやはりおかしかった
- 改行キーでメッセージを送信するとメッセージが同じもの2通が送信されてしまう
- ファイル名としてふさわしくない文字列を含む添付ファイルを保存しようとするとできない。
- 件名に日本語を含んだメッセージを「書きかけ」としていったん保存すると再度の編集時、件名が文字化けする。
その1:ROOT化
Androidのシステムに標準に組み込まれているソフトは通常のアプリのインストール方法なで上書きやアップデートがかけられないようにロックされています。つまり、OS上でROOT権限がないとこれらのコンポーネントの変更・削除ができないことになります。
そこで、俗に言われるROOT化という禁断の手が必要になります。この作業はご存じのとおり、メーカーの保証や各所のサポートを受けられなくしてしまう禁じてであるのでおいそれとはすすめられません。また、この方法についてはここでは省略しますので、関係各所を参考の上チャレンジしてください。
Googleの検索結果
その2:APN問題
SIMフリー版など、携帯キャリアのものでないデバイスを使用する場合について回る問題です。通話やSMSは何もしないでもSIMを差し替えるだけで使えるようになりますが、3G回線を利用したインターネットの接続のためにはいわゆるAPN(アクセスポイント)を設定しないといけません。
これについても、キャリアがオープンにしていない話題ですし、各所で紹介されているのでここでは省略します。
Googleの検索結果
その3:MMSの接続設定
APNの設定の中に、MMSを送受信するための設定も含まれています。SoftbankでMMSを送受信するために、これらの設定が正しくされている必要があります。
Googleの検索結果
その4:Mms.apkの上書き
SMSとMMSを司るソフトコンポーネントは Mms.apk というパッケージで、システム上の /system/app/Mms.apk というファイルです。
SoftbankのSMS,MMS通信ができない理由は、通信プロトコルの不整合や、AndroidOS自身に内在する不具合など複数の要因によって起こっています。これを根本解決するには、Androidのシステムライブラリを含めてSoftbank仕様として再コンパイル後、ファームアップデートとして顧客に配布するよりないのではないかと思います。が、ここでは、それを待っていたら、Softbankのアナウンス通り今年の後半まで指をくわえて待っていなければなりません。
で、必死になって Mms.apk を自分でコンパイルしました。
Softbank MMS問題の修正は、実は4月末までにとある方によってなされており、Android OSのソースを管理する Android Open Source Project にすでに反映されています。そこのソースコードを取得して必要なファイルを更新すればいい・・と思ったところそうは簡単ではないことがわかりました。
Softbank MMS問題の不具合は実はMms.apkの中ではなく、MMSの通信自体のライブラリが格納されている /system/framework/framework.jar という共有ライブラリの中にあったのです。ところが、このファイルを置換することは残念ながらできません。おそらく携帯デバイスやOSのビルドの種類ごとに異なる内容になっており、これを書き換えるとOSそのものが起動しなくなる恐れがあります。そこで、framework.jarには手を付けないで、Mms.apkだけでなんとか済まされないかと格闘。
苦肉の策は、framework.jar に含まれていたMMS関連のソースコードを引き抜いてきて、Mms.apkのソースコードとしてコンパイルしなおすというものです。
この結果、Android標準のメッセージアプリでは無事SMS/MMS/携帯メール の送受信が正しく行えるようになりました。
Softbankでの利用では、Mms.apkを更新後、まず最初に User-Agentの設定を忘れずに行ってください。
改善される点のまとめ
- UserAgentが選択またはカスタム設定可能
- SoftbankのMMSの送受信の種々の不具合の改善
(メッセージの不着、着信しても本文空、画像添付時の不具合などが改善)
- ENTERキーで送信した場合にメッセージが同じもの2通が送信されてしまう不具合
- バイブレーションパターンの設定、LEDの設定がある(HTC DesireではLED動かず?)
- 送信アドレスの入力テキストボックスでの検索と候補表示で電話番号だけでなくメールアドレスからも選択できるようになった。
- 新たな設定項目(Eclairのソースコードに含まれていたものを含む)
スレッドの背景色(有機ELのDesireの場合黒のほうが消費電力が少ない?)
改行キーで送信するかしないかの設定
フォントサイズの設定
Mms.apkjakeMod5以降での更新
- アドレス帳のメールアドレスからSMS/MMS送信にジャンプできるように修正。
- 既存のスレッドにない宛先にジャンプした時の不具合など修正。
Mms.apk.jakeMod6での更新
- ファイル名としてふさわしくない文字列を含む添付ファイルを保存しようとするとできない。
- 件名に日本語を含んだメッセージを「書きかけ」としていったん保存すると再度の編集時、件名が文字化けする。
Mms.apk.jakeMod7での更新
Mms.apk.jakeMod8の更新内容
- ほかのアプリからEMAILアドレスが引き渡された時にアドレスが失われる問題を修正
Intent.ACTION_SEND で Intent.EXTRA_EMAIL の参照を追加。
※元々Mms.apkはEメールアドレスを取り扱う想定が全くなかったのでこういうことに・・・
Mms.apk.jakeMod9の更新内容
- mailto:******?subject=xxxx&body=xxxxx にただしく対処
Mms.apk.jakeMod10の更新内容
- multipart/alternative の取り扱いミスで文字化けを修正
- X01TのUser-Agentを修正
Mms.apk.jakeMod11の更新内容
- cyanogenリポジトリからの修正分を(2010/6/30までの分)
制限事項:
- この Mms.apk 差し替えで有効なのは Androidに標準の「メッ
セージ」アプリを使用した場合だけです。アンドロイドマーケットで配布されている各種SMS/MMSアプリでは同様の問題は改善されません。
- 受信中に表示を切り替えたりすると、異常終了するなどの不具合は時々見られます。(もともと内在する不具合か)
ダウンロードはこちら
Mms.apk.jakeMod11
- 想定環境: Android OS 2.0以上 (HTC Desire ROM 1.21 MoDaCo Custom ROM r1 r2 r3 r3.1で動作確認済み)
- Android 2.2 (Froyo)の場合はこちら
Mms.apk.jakeMod11 (897 kb)