Android4系でNode.jsつかう.

AndroidでNode.js使って通信しようとしたらブラウザ使うかネイティブアプリ使うかの2択で,ネイティブアプリにした.
JavaでWebSocket使うときは,webknecht ( http://code.google.com/p/weberknecht/ ) というWebSocketライブラリ使うのが定番ぽい.
Android2系でテストしてたときは全然問題なくサーバからプッシュ通知受け取れたんだけど,4系でテストしたら,

android.os.NetworkOnMainThreadException

というエラー吐いてアプリが落ちる.
ググったら,3系以上ではStrictModeというアプリを監視するモードがデフォルトでオンになってるから落ちるんだとのことでした.
メインスレッドのパフォーマンスを低下させるようなのとか,ポリシーに反する感じのとき落ちるそう.
これをオフにするには,

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());

をメインスレッドに書いてやればよい.
動いた動いた.