Android Virtual Device を使ってみる

このドキュメントでは、Test Lab の AVD のメリットや既知の制限事項などについて説明します。また、開発ライフサイクル全体でアプリをテストする際の推奨事項についても説明します。Test Lab の AVD は Android Studio の AVD に似ていますが、クラウドでのテスト向けにパフォーマンスが最適化されているため、両者にはいくつかの違いがあります。

.arm または (ARM) 接尾辞の付いた Test Lab の AVD は高度なエミュレータで、次のようなメリットがあります。

  • テスト実行時間が短い

  • 整合性のため Android Studio の AVD と画面サイズと密度が一致している

  • GPU 対応のアクセラレーテッド グラフィックス

次の表に、仮想デバイスを使用するメリットを示します。

利点 説明 ユースケース
高可用性 仮想デバイスを使用したテストでは、迅速にテストを行い、テスト結果を得ることができます。仮想デバイスはオンデマンドで作成されるため、テストをほぼ即座に開始し、アプリを迅速に検証できます。 アプリの小規模なアップデートのテストや回帰テスト。
テスト期間が長い 仮想デバイスは、最大 60 分のテスト期間をサポートします。実機でのテスト期間は、各デバイスで 45 分に限定されています。 より長いテスト実施期間。
コスト削減 仮想デバイスの使用料金は、アプリのテストに使用する仮想デバイスにつき 1 時間あたり $1 です。 継続的インテグレーション システムを使用した日々のテストや、コードのチェックイン前のテスト。詳細については、Test Lab の使用量レベル、割り当て、料金をご覧ください。

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

仮想デバイスでのアプリのテストは、実機でのテストと同じように実行できます。テスト マトリックスを構成するときに、テスト用の仮想デバイスを選択できます。Test Lab でテストを実施する方法については、Firebase Test Lab で Android のテストを開始するをご覧ください。

サポートされているモデルと API を表示する

Test Lab でサポートされている AVD モデルと API を表示するには、次のコマンドを実行します。

gcloud firebase test android models list --filter=virtual

アプリのテストに関するベスト プラクティス

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

Android Studio エミュレータまたは接続された実機を使用する

アプリの開発時に、Android Studio のエミュレータまたは接続された実機を使用して、最初の検証のために各ビルドをテストします。計測テストが必要な場合、Test Lab で利用できる実機か仮想デバイスで、Android Studio から計測テストを実施することもできます。

共有プロジェクトでコードを変更するたびに CI システムを使用する

大規模なプロジェクトで作業する場合や、GitHub などのサービスで共有されているプロジェクトに携わる場合は、継続的インテグレーション(CI)システムの使用をおすすめします。CI システムを実行するたびに、または pull リクエストの前に、仮想デバイスでアプリをテストします。CI システムで Test Lab を使用する方法については、継続的インテグレーション システムで Test Lab for Android を使用するをご覧ください。

アプリの重要なアップデートをリリースする前に Test Lab の実機でアプリをテストする

UI と機能に大規模な変更を行い、アプリのアップデートを取得する前に、Test Lab を使用して実機でアプリをテストすることをおすすめします。これにより、よく利用されている実機でアプリが問題なく動作することを確認できます。また、実機でテストすることで、仮想デバイスでシミュレーションされない機能を利用して、アプリの機能をテストできます。これらの機能の詳細については、既知の制限事項をご覧ください。

仮想デバイスのアップデート

Android チームは、定期的に新しい仮想デバイス イメージを追加し、古いイメージを非推奨にし、既存のイメージを更新しています。仮想デバイス イメージにこうしたアップデートを適用することにより、ユーザーのエクスペリエンスを反映した最新の Android バージョンでテストを行うことができます。

まれに、これらのアップデートによりテストが予期せず失敗することがあります。アップデートによって問題を引き起こす可能性があることが判明している場合は、Test Lab のリリースノートにその旨が記載されます。ベスト プラクティスとして、こうした変更に強いテスト フレームワーク(Espresso など)をできる限り使用することをおすすめします。それができない場合は、Arm 仮想デバイスをターゲットにすることをおすすめします。Arm 仮想デバイスはアップデートの頻度が低いと想定されます。

既知の制限事項

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

機能 詳細
アプリケーション バイナリ インターフェース(ABI) すべてのデバイスがすべての ABI に対応しているわけではありません。Android NDK で開発している場合は、ターゲットとするデバイスでサポートされている ABI のコードを必ず生成してください(Test Lab の使用可能なデバイスをご覧ください)。ABI 管理の詳細については、Android ABI をご覧ください。

注: テスト マトリックス内のテストが無効とマークされている場合は、デバイスの ABI でサポートされていないネイティブ コードにアプリが依存している可能性があります。

グラフィック パフォーマンス Nexus や Pixel の仮想デバイスは、ソフトウェア グラフィックのレンダリングを使用します。グラフィックを多用するアプリでは、パフォーマンスが低下することがあります。アプリがグラフィックを多用する場合は、代わりに SmallPhone.arm、MediumPhone.arm、または実機の使用を検討してください。
グラフィック API API レベル 29 以前のデバイスでは、OpenGL ES 3.x はサポートされていません。新しいデバイスは OpenGL/Vulkan API と 100% 互換性がなく、グラフィックに若干の違いが生じることがあります。
Google Play ストア アプリ Google Play ストア アプリは Arm 仮想デバイスでサポートされていません。
拡張現実(AR)機能 仮想デバイスでは、拡張現実(AR)機能のテストはサポートされていません。
古い API レベル Test Lab Arm 仮想デバイスは、API レベル 26 未満をサポートしていません。

次のステップ