Virtual Machine Acceleration

Android SDKのr17からVirtual Machine Accelerationが導入されている。今まで、遅すぎて使いにくいエミュレータがこれにより、まあまあな感じで動くようになった気がする。設定方法自体はここに記述されている。簡単にまとめると、Windowsなら

  1. Android SDK r17以上にする (現状、2.3系しかないIntel Atom x86 System ImageとIntel Hardware Accelerated Execution Managerを入れる)
  2.  <sdk>/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.exeをインストールする
  3. 2.3系のイメージでx86のやつを選んでエミュレータを作成する
  4. いつもどおりにそれを実行

という感じ。apkのインストールも今までのように待たされることはないので改善されている感じはする。今後、3系や4系のイメージも作れるようになると良いかも。そんな感じで、今後、エミュレータはARM版は使わないかも。

AndroidエミュレータからPCにアクセス

Androidアプリでエミュレータから利用しているPCにアクセスしたいときがあるかと思う。ローカルホストだから、127.0.0.1とかすると、エミュレータ自身のIPになり、PCにアクセスできない。どうすれば良いのだろうと思ったら、ちゃんと用意されていた。つまり、10.0.2.2を利用すれば良い。ほかにも決まっているものがあるのだね。まぁ、10.0.2.2を覚えておけば良いということだな。

10.0.2.1 Router/gateway address
10.0.2.2 Special alias to your host loopback interface (i.e., 127.0.0.1 on your development machine)
10.0.2.3 First DNS server
10.0.2.4 / 10.0.2.5 / 10.0.2.6 Optional second, third and fourth DNS server (if any)
10.0.2.15 The emulated device’s own network/ethernet interface
127.0.0.1 The emulated device’s own loopback interface

Titaniumって

Titaniumの中身を確認しようと思い、コードとかを眺めてみた。コンパイル時にjsをネイティブに変換するような感じの説明をよく見るけど、実行時にjsを変換しているように見えるのだけど、気のせいかしら…。V8RuntimeとかRhinoRuntime的な実装もいるみたいだし。あとは、アプリを落とすような、キャッチできなかった例外をAnalyticsに送信しようとするコードもあったのも気になった。まぁ、個人的にはTitaniumというよりはPhoneGap(Cordova)の方が使いやすいから、これくらいにしておこ。