2013/04/08

HTC JのSIMフリー化

HTC J


少し前にMNPでHTC Jを手に入れた。
この機種を選んだ理由は、ごにょごにょすることでSIMフリーになるらしいと聞いたため。
手元にはIIJmioのSIMが余っているので、これをさして使いたい。

SIMフリー化


HTC速報さんのカスタムROMを使用してSIMフリー化。
作業実施前に必要なbootloader unlock方法も、同じくHTC速報さんの記事を見つつ実施。

bootloader unlockさえやってしまえば、作業自体はXperiaやなんかでカスタムROM入れた時と同じような感じ。
ただしいくつかハマったポイントも。

  • 横着してカスタムROM導入→WCDMA Enablerを一気にやったら起動しなくなった。
    カスタムROM導入→起動して動作確認→WCDMA Enabler適用→起動して動作確認 と実施したところ正常に起動した。
  • IIJmioのSIMを認識しなかった。
    原因はよくわからず。カスタムROMの入れ直しや隠し設定をいじっているうちに認識するようになった。

アンテナピクト問題

データ専用のMVNO系SIMを使っていると、「信号なし」と表示されてしまう問題。
実用上はあんまり問題ないものの、意外と鬱陶しいのでhello.cさんの記事を見つつ作業。 

結果としては、失敗
odexファイルを差し替えると、起動画面で停止したまま起動しない。

とりあえず、adb logcatで正常時(odexを元に戻した場合)と異常時(odex差し替え後)の起動時のログを取得して比較してみた。
ざっと眺めた感じ、異常時にだけ出ているログはこのあたり。

E/dalvikvm(  212): /system/framework/framework2.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/android.policy.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/services.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/apache-xml.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/HTCDev.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/HTCCommonctrl.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/HTCExtension.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/filterfw.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/com.htc.android.bluetooth.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/wimax.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/usbnet.jar odex has stale dependencies
E/dalvikvm(  212): /system/framework/com.orange.authentication.simcard.jar odex has stale dependencies
W/dalvikvm( 212): Link of class 'Landroid/graphics/Bitmap;' failed
F/libc ( 212): Fatal signal 11 (SIGSEGV) at 0x0000002c (code=1)
I/DEBUG ( 209): handle_crashing_process(8)
...

ぐぐってみたものの解決策が見つからなかったので、とりあえずは保留。

ただ、以前別の機種でほぼ同じ手順でアンテナピクト問題を解消したことがあるので、手順の問題とも考え辛い。謎。


(2013/03/04 追記)
2013/05/29-31にやっていたワイヤレスジャパンで、IIJmioの人が「SMS対応を前向きに検討中」と言っていた。
実現すればodex差し替えが不要になるかも。

(2013/09/30 追記)
9/25にIIJからSMS対応SIMが発表された
SIM交換手数料2100円+月額147円払うか、我慢するか。

(2014/04/06 追記)
hello.cさんの記事が消えていたので手順を簡単に。
  1. smali / backsmali取得 (取得元)
  2. dexopt-wrapper取得 (取得元)
  3. 必要なファイルのコピー
    adb pull /system/framework/framework2.jar
    adb pull /system/framework/framework2.odex
    adb pull /system/framework framework
  4. 逆コンパイル
    java -Xmx1024m -jar ./baksmali-1.3.3.jar -c:core.jar:core-junit.jar:bouncycastle.jar:\
    ext.jar:framework.jar:framework2.jar:android.policy.jar:services.jar:apache-xml.jar:\
    HTCDev.jar:HTCExtension.jar:filterfw.jar:com.htc.android.bluetooth.jar:wimax.jar:\
    usbnet.jar:com.orange.authentication.simcard.jar:com.htc.fusion.fx.jar:\
    com.htc.lockscreen.fusion.jar -d framework -x framework2.odex -o framework2
  5. ファイル編集
    framework2\out\com\android\internal\telephony\gsm\GsmServiceStateTracker.smaliを下記のように変更。
    .line 2300
    :pswitch_data_44
    .packed-switch 0x0
    :pswitch_1c
    :pswitch_37
    :pswitch_1d
    :pswitch_29 -> :pswitch_37
    :pswitch_29
    :pswitch_39
    :pswitch_6
    :pswitch_6
    :pswitch_6
    :pswitch_6
    :pswitch_35
    :pswitch_6
    :pswitch_35
    :pswitch_35 -> :pswitch_37
    :pswitch_35
    :pswitch_3b
    .end packed-switch
  6. 再コンパイル
    java -Xmx1024m -jar ./smali-1.3.3.jar framework2 -o classes.dex
  7. framework2.jarの中にclasses.dex格納
    7za d -tzip framework2.jar classes.dex
    7za a -tzip framework2.jar classes.dex
  8. 端末へ転送
    adb push framework2.jar /data/local/tmp/.
    adb push dexopt-wrapper /data/local/tmp/.
  9. framework2.jarをodexに&署名
    adb shell
    $ cd /data/local/tmp
    $ chmod 755 ./dexopt-wrapper
    $ ./dexopt-wrapper framework2.jar framework2.odex
    $ busybox dd if=/system/framework/framework2.odex of=./framework2.odex bs=1 count=20 skip=52 seek=52 conv=notrunc
    $ exit
  10. CWMで起動し、正規のファイルと入れ替え
    adb shell
    # mount /data
    # mount /system
    # cd /system/framework
    # cp framework2.jar framework2.jar.orig
    # cp framework2.odex framework2.odex.orig
    # rm framework2.odex
    # cp /data/local/tmp/framework2.odex .
    # chmod 644 framework2.odex
    # exit
  11. dalvikキャッシュ削除 ( advanced->Wipe dalvik cache )

Googleリーダーの代替サービス

Googleリーダー

RSSの購読にはGoogleリーダーを使っていたが、どうやらサービスが終了するらしい。
ということで代替サービスを探すことにした。

候補

Googleリーダーの終了は影響を受ける人が多いからか、あちこちで代替サービスまとめが作られていた。
それらをちらちら眺めつつ、試してみようと思ったのは下記5種類。

サービス名 特徴
feedly 雑誌形式で表示がきれいらしい。
Googleリーダーからの移行が簡単なのもウリ。
pulse 以前から人気のあったRSSリーダーのサービス。
こちらも雑誌形式で表示がきれいらしい。
netvibes カスタマイズ性が高く、iGoogle的なこともできるらしい。
NewsBlur 見た目がGoogleリーダーに近いらしい。
Googleカレント Googleリーダーと同じくGoogleのRSSリーダーのサービス。

観点

  • PC/Mobile両方で表示/同期できること
  • 未読管理ができること
  • 一覧性が悪くないこと
  • 操作性が悪くないこと

使ってみた印象(随時追記予定)

サービス名 良いところ 悪いところ
feedly
  • Androidアプリあり
  • Googleリーダーと未読/既読含めて連動するので移行期にはとても楽
  • フォルダ/フィードごとに表示をカスタマイズ可能

  • Androidアプリが重い
pulse


  • OPMLインポート機能がないので移行が面倒
netvibes
  • iGoogle的な機能が欲しい場合によい
  • OPMLインポートで移行可能

  • 各フィードの最新の記事をざっと眺めるにはいいが、全部読むのはつらい
NewsBlur


  • 無料ユーザは64フィードまでしか登録できない
Googleカレント
  • Googleリーダーのフィードを(1件ずつ)インポートできる

  • 個々のフィードはそこそこ見やすいが、他のフィードを見たい場合に左上の小さな矢印で戻る必要があって面倒
  • Googleリーダーに登録されたフィードを選択して登録できるが、全て同じカテゴリになるためフィード数が多いと使い辛い