Google は、黒人コミュニティのための人種的公平の促進に取り組んでいます。詳細をご覧ください。

Android Virtual Device を使ってみる

Firebase Test Lab の Android Virtual Device(AVD)は、Android デバイスを高い精度でシミュレーションしたものです。Test Lab の AVD は誰もが常に利用でき、日常的な開発や継続的インテグレーションのテストでとても役立ちます。Test Lab の AVD は Android Studio の AVD に似ていますが、クラウドでのテスト向けにパフォーマンスが最適化されているため、両者にはいくつかの違いがあります(たとえば、Test Lab の AVD は Wi-Fi 接続ではなくエミュレートされたデータ接続を使用します)。

仮想デバイスを使用する理由

物理デバイスと比べると、仮想デバイスには次のようなメリットがあります。

  • 高可用性: 仮想デバイスを使用したテストでは、迅速にテストを行い、テスト結果を得ることができます。仮想デバイスはオンデマンドで作成できるため、テストをほぼ即座に開始し、アプリを迅速に検証できます。仮想デバイスは、アプリの小規模なアップデートのテストや、回帰テストに理想的です。
  • 長時間のテスト: 物理デバイスでのテスト期間は、各デバイス上で 45 分に限定されています。仮想デバイスでは、最長 60 分のテスト時間に対応しているため、より長いテストを実施でき、特にアプリのパフォーマンス計測に適しています。
  • 低コスト: 仮想デバイスの使用料金は、アプリのテストに使用する各仮想デバイスにつき 1 時間あたり $1 です。仮想デバイスは低コストなため、継続的インテグレーション システムを使用した日々のテストや、コードのチェックイン前のテストに最適です。詳しくは Test Lab の課金についての記事をご覧ください。

仮想デバイスでアプリをテストする方法

仮想デバイスでのアプリのテストは、物理デバイスでのテストと同じように実行できます。テスト マトリックスを構成するためにテスト ディメンションを選択する際に、仮想デバイスを選択するだけです。

アプリのテストに関するおすすめの方法

仮想デバイスによって、Test Lab でアプリをテストする際の選択肢が広がります。アプリ開発のライフサイクル全体で、次のアプローチによってアプリをテストすることをおすすめします。

  • Android Studio: アプリの開発時に、Android Studio のエミュレータまたは接続された物理デバイスを使用して、初期の検証のために各ビルドをテストします。インストルメンテーション テストが必要な場合、Test Lab で利用できる物理デバイスか仮想デバイスで、Android Studio からインストルメンテーション テストを実施することもできます。
  • Test Lab を低解像度 MDPI 汎用仮想デバイスで使用する: Test Lab の低解像度 MDPI 汎用スマートフォン仮想デバイスを使用すると、他の仮想デバイスよりも迅速に、アプリの Robo テストやインストルメンテーション テストを実施できます。MDPI 仮想デバイスは、API レベル 23 以上で使用できます。このデバイスを gcloud コマンドライン インターフェースから使用するには、NexusLowRes モデル ID を使用します。
  • 共有プロジェクトで、各コードの変更に継続的インテグレーション(CI)システムを使用する: 大規模なプロジェクトで作業する場合や、GitHub や類似のサイトで共有されたプロジェクトに携わる場合、継続的インテグレーション(CI)システムを使用して、CI システムが実行されるたびに、または各 pull リクエストの前に、アプリを仮想デバイスでテストすることをおすすめします。CI システムでの Test Lab の使用方法については、Test Lab for Android と継続的インテグレーション システムを併用するをご覧ください。
  • アプリの大規模なアップデートのリリース前: アプリの UI と機能の大規模な変更を伴うアップデートをリリースする前に、Test Lab を使用してアプリを物理デバイスでテストすることをおすすめします。これによって、よく利用されている物理デバイスでアプリが問題なく動作することを確認できます。また、仮想デバイスでシミュレーションされない物理デバイスの機能を使用したアプリの機能もテストできます。これらの機能の詳細については、既知の制限事項をご覧ください。

既知の制限事項

現時点で、物理デバイスの一部の機能は仮想デバイスでシミュレーションされないか、一部の制限のもとでシミュレーションされます。次の表に、現時点で仮想デバイスでは使用できない機能と、使用に際し一部の制限がある機能を示します。

機能 詳細
x86 以外のアプリケーション バイナリ インターフェース(ABI) 仮想デバイスは、x86 ABI のみをサポートしています。開発に Android NDK を使用している場合は、x86 命令セット向けにコードを生成してください。詳しくは、ABI の管理をご覧ください。

注: テスト マトリックス内の一部のテストが「無効」とマークされている場合は、アプリがネイティブ ARM コードを使用していることが原因である可能性があります。
動画のエンコードとデコード 現在、仮想デバイスでは H264 動画のデコードのみがサポートされています。動画のエンコードはサポートされていません。

注: 現在、仮想デバイスでのテストでは、動画は 1 秒あたり 1 フレームで再生されます。物理デバイスでのテスト時と比較して動画はスムーズに再生されません。
OpenGL ES 3.x OpenGL ES 3.x 以降のグラフィック ライブラリは仮想デバイスで使用できません。
Camera HAL v3 Android の Camera HAL v3.0 の詳細については、Camera HAL v3 の概要をご覧ください。
バーチャル プライベート ネットワーク(VPN) 現在、仮想デバイスでは VPN を使用できません。