さらに、今回、OpenGL ES 2.0 をサポートしました。これによって、OpenGL で実装したゲームをエミュレーターの中で動かすことができます。
ただし、現在、数多くの GPU が存在し、ベータ版の段階ですべての GPU でテストは行なっていません。もしフィードバックや問題がある場合は、
お知らせください 。
ハードウェア機能をエミュレータに
モバイル機器においては、さまざまなハードウェア機能の存在が、その開発プラットフォームとしてのユニークな特徴です。そこで、昨年のカメラ機能のサポートに加えて、今回、テザリングにより接続された Android 端末から、センサやマルチタッチの入力を行うことができるようになりました。
また、Bluetooth や NFC といったハードウェア機能のエミュレータ上でのサポートの提供にも取り組んでいます。
CPU のパフォーマンスを改善
さらに、今回、Android エミュレーターの CPU 性能も向上させました。 ハードウェア浮動小数点演算は Ice Cream Sandwich(Android 4.0)以降のシステムイメージで利用でき、CPU による演算を従来の約 2 倍の速度でエミュレータ上で実行することを可能にしています。
SDK r17 版の開発者向けツールには、x86 システムイメージとホストドライバ(SDK Manager を通して入手できます)が含まれています。エミュレータは、ホスト CPU を直接利用することにより、大幅に高速化することが可能です。
次のビデオは、CPU に高負荷をかけるアプリケーションを仮想化した場合とそうでない場合で比較したものです。
モダンなエミュレータを作る
Android プラットフォームではアプリケーション間、システムコンポーネントとの緊密な連携が可能なため、全体的なシステムイメージをもったエミュレータを提供することが必要です。今回のエミュレータは端末全体を仮想化しています。すなわち、ハードウェア、カーネル、低レベルのシステムライブラリ、そしてアプリケーションフレームワークです。
もちろん、エミュレートされる典型的なシステムは ARM CPU を搭載しています。これまでも、ARM命令をソフトウェアでエミュレート実行してきましたし、Android 3.0 でアニメーション機能などタブレットのサポートが行われるまでは問題ありませんでした。
足りなかったのは、Android x86 の完全なサポートと、最近のリリースされた SDK Tools r17 での GPU サポートでした。これは、OpenGL ES 2.0 インストラクションをホスト OS からエミュレータに流し込み、標準の OpenGL 2.0 に変換して、ホスト GPU 上でネイティブ実行するという方法で実現しています。
まとめ
Android のエコシステムには、さまざまなフォームファクターを有する数多くのデバイスがあります。開発者はこうしたすべてのデバイスを持たなくても、アプリをテストすることができる良い方法を必要とします。そして、速くてリッチな Android エミュレーターは非常に役に立ちます。
今回の改良は、開発やテストという作業の中で、エミュレータをさらに便利なツールとしてくれるでしょう。そして、皆さんのためにさらにそれを改善していきたいと思います。
Posted by 山崎富美 Developer Relations Team
[本記事は、Android エンジニアリングチームの Xavier Ducrohet と Reto Meier が書いた"A Faster Emulator with Better Hardware Support "を元に翻訳・再構成しました。-山崎]
Android エミュレーターは、Android 開発者にとってアプリケーションの開発やテストにおける重要なツールです。 Android デバイスの機能や多様性が急速に変化する中で、エミュレーターをそのペースに合わせることは難しい状況でした。
そこで、このたび、このエミュレータに対していくつかの重要な改善を行いました。大幅なパフォーマンスの改善、広範囲なハードウェア機能のサポート、特にセンサーとマルチタッチ入力が含まれます。
GPU サポートを追加
このたび、リリースするシステムイメージは、GPU サポートを組み込んでいます(Android 4.0.3 r2)。 Android のパフォーマンスの向上が GPU に大きく依存していることを考えれば、その違いは顕著です。次のビデオでは、ARM インストラクションは従来どおりエミュレータがインタープリタ実行していますが、GPU の働きによりパフォーマンスが向上しています。
さらに、今回、OpenGL ES 2.0 をサポートしました。これによって、OpenGL で実装したゲームをエミュレーターの中で動かすことができます。
ただし、現在、数多くの GPU が存在し、ベータ版の段階ですべての GPU でテストは行なっていません。もしフィードバックや問題がある場合は、お知らせください 。
ハードウェア機能をエミュレータに
モバイル機器においては、さまざまなハードウェア機能の存在が、その開発プラットフォームとしてのユニークな特徴です。そこで、昨年のカメラ機能のサポートに加えて、今回、テザリングにより接続された Android 端末から、センサやマルチタッチの入力を行うことができるようになりました。
また、Bluetooth や NFC といったハードウェア機能のエミュレータ上でのサポートの提供にも取り組んでいます。
CPU のパフォーマンスを改善
さらに、今回、Android エミュレーターの CPU 性能も向上させました。 ハードウェア浮動小数点演算は Ice Cream Sandwich(Android 4.0)以降のシステムイメージで利用でき、CPU による演算を従来の約 2 倍の速度でエミュレータ上で実行することを可能にしています。
SDK r17 版の開発者向けツールには、x86 システムイメージとホストドライバ(SDK Manager を通して入手できます)が含まれています。エミュレータは、ホスト CPU を直接利用することにより、大幅に高速化することが可能です。
次のビデオは、CPU に高負荷をかけるアプリケーションを仮想化した場合とそうでない場合で比較したものです。
モダンなエミュレータを作る
Android プラットフォームではアプリケーション間、システムコンポーネントとの緊密な連携が可能なため、全体的なシステムイメージをもったエミュレータを提供することが必要です。今回のエミュレータは端末全体を仮想化しています。すなわち、ハードウェア、カーネル、低レベルのシステムライブラリ、そしてアプリケーションフレームワークです。
もちろん、エミュレートされる典型的なシステムは ARM CPU を搭載しています。これまでも、ARM命令をソフトウェアでエミュレート実行してきましたし、Android 3.0 でアニメーション機能などタブレットのサポートが行われるまでは問題ありませんでした。
足りなかったのは、Android x86 の完全なサポートと、最近のリリースされた SDK Tools r17 での GPU サポートでした。これは、OpenGL ES 2.0 インストラクションをホスト OS からエミュレータに流し込み、標準の OpenGL 2.0 に変換して、ホスト GPU 上でネイティブ実行するという方法で実現しています。
まとめ
Android のエコシステムには、さまざまなフォームファクターを有する数多くのデバイスがあります。開発者はこうしたすべてのデバイスを持たなくても、アプリをテストすることができる良い方法を必要とします。そして、速くてリッチな Android エミュレーターは非常に役に立ちます。
今回の改良は、開発やテストという作業の中で、エミュレータをさらに便利なツールとしてくれるでしょう。そして、皆さんのためにさらにそれを改善していきたいと思います。