Cuttlefishは、リモート (Google Cloud Engine などのサードパーティ クラウド サービスを使用) とローカル (Linux x86 マシン上) の両方で実行できる構成可能な仮想 Android デバイスです。
イカのゴール
- プラットフォームとアプリの開発者は、コードの変更を開発および検証するために物理ハードウェアに依存する必要がなくなります。
- コア フレームワークとの緊密な連携を維持することで、高い忠実度に重点を置いて、実際のデバイスのフレームワーク ベースの動作を再現します。
- 28 以降のすべての API レベルをサポートします。
- 物理ハードウェアの動作に合わせて、API レベル全体で一貫したレベルの機能を提供します。
スケールを有効にする:
- 複数のデバイスを並行して実行する機能を提供します。
- エントリーコストを抑えながら、忠実度の高い同時テスト実行を可能にします。
フォームファクタ、RAM、CPU などを調整できる構成可能なデバイスを提供します。
Cuttlefish を他のデバイスと比較する
カトルフィッシュと Android エミュレーター
Android Emulatorには多くの類似点がありますが、Cuttlefish は Android フレームワーク (これが純粋な AOSP であるか、独自のツリーでのカスタム実装であるかにかかわらず) との完全な忠実性を保証します。実際のアプリケーションでは、これは、同じカスタマイズされた、または純粋な Android OS ソースで構築された物理的な電話ターゲットのように、Cuttlefish が OS レベルでの対話に応答することを期待する必要があることを意味します。
Android Emulator は、アプリケーション開発を容易にするユースケースを中心に構築されており、Android アプリ開発者のユースケースにアピールする多くの機能フックが含まれています。カスタマイズした Android フレームワークを使用してエミュレーターを構築する場合、これは問題になる可能性があります。カスタム プラットフォーム/フレームワーク コードまたはツリーの先端の Android を表す仮想デバイスが必要な場合、Cuttlefish は理想的な仮想オプションです。これは、AOSP 開発の現状を表す標準的なデバイスです。
イカと物理デバイス
Cuttlefish 仮想デバイスと物理デバイスの主な違いは、ハードウェア抽象化レイヤー (HAL) レベルと、カスタム ハードウェアとやり取りするソフトウェアにあります。ハードウェア固有の実装を除いて、Cuttlefish と物理デバイスの間で機能的に同等の動作を期待する必要があります。
カトルフィッシュはどのように役立ちますか?
デバッグに使用する他の Android デバイスと同じように Cuttlefish を操作できます。 adb を介して通常のデバイスとして登録され、リモート デスクトップを介して物理デバイスのように操作できます。ユース ケースは幅広く、アプリケーションのテスト、カスタム システム ビルドのテストなどに及びます。
Cuttlefish はフレームワークの完全な忠実性を目指しているため、エミュレートできない物理的なハードウェアの依存関係がないフレームワークやアプリケーションの機能テストに使用できます。
現在、Cuttlefish は一般的にどのようにテストに使用されていますか?
テスト用の Cuttlefish の一般的なアプリケーションには、次のようなものがあります。
- CTS
- フレームワークのコンプライアンス
- 継続的統合テスト
- カスタム テスト スイート
イカをクラウドでホストできますか?
はい。Cuttlefish はネイティブで Google Cloud をサポートしており、他のクラウド プラットフォームのサポートも予定されています。
入門
AOSP に基づいて Cuttlefish インスタンスを作成する方法については、Cuttlefish を使用するを参照してください。