« 2012年3月23日 | 2012年3月26日の投稿 |
2012年3月28日 » |
"Android SDKアップデート、Windows/Macでエミュレータが高速に"を読んで、Androidエミュレーターがどれほど高速化したのかと思い試してみました。この記事に興味がわいた理由は、"Android 3.0エミュレータを起動させてみた~ものすごく遅い~"があまりにも遅くて使えなかったためです。また、PhoneGapでAndroidアプリも作ろうかと思っているので、試してみたいと思いました(PhoneGapで作る分はエミュレーターではデバッグしないのですが)。
試してみたのですが、Windowsではそれを実感することはできませんでした。Macでは高速化されていることがわかりました。
その手順を記載します。参考にしたのは、"Configuring Virtual Machine Acceleration"です。
まずは、Android SDK Tools Rev.17、Android 2.3.3のIntel Atom x86 System Image Rev.1、ExtrasのIntel Hardware Accelerated Execution Manager Rev.1をインストールします。
次に、Intel Hardware Accelerated Execution Managerはそのままでは機能しないようなのでインストールします。インストールするファイルは以下にあります。
<sdkのパス>/extras/intel/Hardware_Accelerated_Execution_Manager/IntelHAXM.dmg
これをインストールします。
インストール成功後に、コンソールで"kextstat | grep intel"を投入することで状態を把握できます。
次にAVD Manager(EclipseのメニューのWindowのAVD Manager)で、Newをクリックして新しいAVDを作ります。そのときにターゲットに"Intel Atom x86 System Image(Inte Corporation) - API Level 10"を選択します。
このAVDを起動するとなんとかなり速いです。
起動画面に違いはありませんが、Android 3.0エミュレータを試したときの速度はなんだったのかと思うほど速く起動して、軽いです。
速度差を計るために簡単なベンチマークを取ってみました。デフォルトのブラウザでSunSpiderを実行した時間が以下になります。比較対象にAVDのAPI Level 15のARMのSystem Image、iOSエミュレーター、iPad 3rd gen、Safari(Macbook Air mid 2011)、NEXUS SC-04Dです。エミュレーターは全てMacbook Air mid 2011上で動かしています。
SunSpider (ms) | |
AVD(x86 API Level 10) | 2,676 |
AVD (Android 4.0.3 API Level 15) |
17,647 |
iOSエミュレーター | 1,126 |
iPad 3rd gen | 1,709 |
Safari 5.1.3 | 237 |
NEXUS SC-04D | 1,997 |
この数字を見て、いろいろと考えさせられました。
Intelのソフトの提供でAndroid x86のエミュレーターは速度の改善が見られます。まだx86 system imageは、Android 2.3.3しか提供されていませんが、IntelはGoogleと提供してAndroidに参加しているため、x86 system imageのサポートは増えると思われます。
NEXUS SC-04D(OMAP 4460)とMacbook Air(Core i5-2557M)の高速化されたx86のAVDはかなり近い数字が出ています。
ですが、それでもiOSエミュレーションからは低速です。Android 2.3.3のデフォルトブラウザだったこともありますが、Androidアプリを動かそうと思うほど早くはありません。
iPad 3rd genよりもMacbook Air(Core i5-2557M)の方が高速です。もっと速いMacbook Proなどならば、もっと速度差があると思います。
Androidの端末数は劇的に増えています。近い将来AndroidはWindowsを抜く可能性もあると考えています。2011年の時点で年間出荷台数ではAndroidはiOS(iPhone/iPad/iPod touch)を抜いています。
出荷台数の高い伸びを維持しているAndroidはプラットフォームとして魅力的です。ただし、現時点ではゲーム分野で儲からないと判断しているメーカもいますが。
このため、WindowsやMacでAndroidアプリが課金システム込みで動作すればエミュレーターで動かすのも面白いと思っています。
これはゲームコンソールが前ハードのアプリを後継のハードでエミュレーターで動作させるのと同じ方式です。モバイルデバイスの低性能且つPC等がCPUパワーに差がある場合なら実現できる方式です。ただし、速度があまりにも遅ければこの筋書きも意味がありませんが。
このため今回のようなエミュレーターの高速化はこの筋道への布石にもなれます。AppleもiOSに力を入れていることを考えると案外、"庇を貸して母屋を取られる"方式も割とありそうなシナリオではないかとも思っています(同じ言語と同じ開発スタイルを取れるので、低速化の意味は薄い可能性はありますが)。
ついでに、AMDのCPUを搭載した自作PCにはIntelのドライバーは入りません。また、ThinkPad X201sでVTをONにしてインストールを試みました。Intelのドライバーはインストールでき且つ"sc query intelhaxm"ではRUNNINGなのですが、同じようにx86 system imageのAVDを起動しても高速化されている雰囲気はありませんでした。Macbook Airで高速化出来ているので、原因はわかりませんでした。
« 2012年3月23日 | 2012年3月26日の投稿 |
2012年3月28日 » |