2025 年 3 月 27 日より、AOSP のビルドとコントリビューションには aosp-main
ではなく android-latest-release
を使用することをおすすめします。詳細については、AOSP の変更をご覧ください。
Cuttlefish 仮想 Android デバイス
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
Cuttlefish は、リモート環境(Google Cloud Engine などのサードパーティ クラウド サービスを使用)でも、ローカル環境(Linux x86 および ARM64 マシン上)でも実行できる、カスタマイズ可能な仮想 Android デバイスです。
Cuttlefish の目的
Cuttlefish と他のデバイスを比較する
Cuttlefish と Android Emulator
Cuttlefish は、Android Emulator と多くの類似点がありますが、ピュア AOSP でも、独自ツリー内のカスタム実装でも、Android フレームワークに対する完全な忠実度が保証されています。そのため、Cuttlefish は、実際のアプリ内で生じた OS レベル インタラクションに対して、同じカスタム Android OS ソースやピュア Android OS ソースを使用してビルドされた物理スマートフォン ターゲットと同様に応答します。
Android Emulator は、アプリの開発を容易にするよう設計されており、Android アプリ デベロッパーの各ユースケースに適した機能フックを多数備えています。そのため、カスタム Android フレームワークを使用した場合、エミュレータのビルドが難しくなることがあります。カスタム プラットフォーム / フレームワーク コードや最先端 Android 向けの仮想デバイスが必要な場合、Cuttlefish が最適な仮想化方法になります。Cuttlefish は、最先端の AOSP 開発向けの標準デバイスです。
Cuttlefish と物理デバイス
Cuttlefish 仮想デバイスと物理デバイスの主な違いは、ハードウェア抽象化レイヤ(HAL)レベルと、カスタム ハードウェアとインタラクションするソフトウェアにあります。ハードウェア固有の実装を除き、Cuttlefish と物理デバイスの機能や動作は同等です。
Cuttlefish の仕組み
Cuttlefish は、デバッグで使用する Android デバイスと同じように操作できます。adb 経由で通常のデバイスとして登録され、リモート パソコン経由で物理デバイスを操作するのと同じように操作できます。ユースケースは多岐にわたり、アプリのテスト、カスタム システムのビルドテストなど、幅広く利用できます。
Cuttlefish は、フレームワークに完全に忠実であることを重視して作られているため、エミュレートできない物理ハードウェア依存関係がない場合に、独自のフレームワークやアプリの機能テストに使用できます。
現在 Cuttlefish がよく利用されているテスト
Cuttlefish がよく使用されるテストには、以下のものがあります。
- CTS
- フレームワークのコンプライアンス
- 継続的インテグレーション テスト
- カスタムテスト スイート
クラウド内に Cuttlefish をホストできるか
はい、できます。Cuttlefish は Google Cloud をネイティブ サポートしており、他のクラウド プラットフォームにも対応する予定です。
はじめに
AOSP ベースの Cuttlefish インスタンスを作成する方法については、Cuttlefish を使用するをご覧ください。
このページのコンテンツやコードサンプルは、コンテンツ ライセンスに記載のライセンスに従います。Java および OpenJDK は Oracle および関連会社の商標または登録商標です。
最終更新日 2025-03-26 UTC。
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2025-03-26 UTC。"],[],[],null,["# Cuttlefish virtual Android devices\n\n*Cuttlefish* is a configurable virtual Android device that can run both remotely\n(using third-party cloud offerings such as Google Cloud Engine) and locally (on\nLinux x86 and ARM64 machines).\n\nCuttlefish goals\n----------------\n\n- Free the platform and app developer from being dependent on physical hardware to develop and validate code changes.\n- Replicate the framework-based behavior of a real device with a focus on **high fidelity** by maintaining close alignment with the core framework.\n- Support all API levels after 28.\n- Provide a **consistent** level of functionality across API levels, aligned with the behavior on physical hardware.\n- Enable scale:\n\n - Provide the ability to run multiple devices in parallel.\n - Enable concurrent test execution with high fidelity at a lower cost of entry.\n- Provide a configurable device with the ability to adjust form factor, RAM,\n CPUs, etc.\n\nCompare Cuttlefish to other devices\n-----------------------------------\n\n### Cuttlefish and Android Emulator\n\nThere are many similarities with the [Android Emulator](/docs/setup/test/avd),\nbut Cuttlefish guarantees full fidelity with Android framework (whether this is\npure AOSP or a custom implementation in your own tree). In real-world\napplication, this means that you should expect Cuttlefish to respond to your\ninteractions at the OS level just like a physical phone target built with the\nsame customized or pure Android OS source.\n\nThe Android Emulator has been built around the use case of making app\ndevelopment easy, and it contains many functional hooks to appeal to the use\ncases of the Android app developer. This may present challenges if you want\nto build an emulator with your customized Android framework. If you need a\nvirtual device that will be representative of your custom platform/framework\ncode or tip-of-tree Android, then Cuttlefish is an ideal virtual option. It is\nthe canonical device for representing the current state of AOSP development.\n\n### Cuttlefish and physical device\n\nThe primary differences between a Cuttlefish virtual device and your physical\ndevice are at the hardware abstraction layer (HAL) level, as well as any\nsoftware that interacts with any custom hardware. Except for hardware-specific\nimplementations, you should expect functionally equivalent behavior between\nCuttlefish and a physical device.\n\nHow can Cuttlefish help?\n------------------------\n\nYou can interact with Cuttlefish just like you would with any other Android\ndevice that you might use for debugging. It will register itself as a normal\ndevice via adb and you can interact with it like a physical device via remote\ndesktop. The use cases are broad and can span app testing, custom system\nbuild testing and more.\n\nBecause Cuttlefish strives for full framework fidelity, it can be used for\nfunctional testing of your framework or apps where there are no\nphysical hardware dependencies that are impossible to emulate.\n\n### How is Cuttlefish commonly used for testing today?\n\nSome common applications of Cuttlefish for testing include:\n\n- CTS\n- Framework compliance\n- Continuous integration testing\n- Custom test suites\n\nCan I host Cuttlefish in the cloud?\n-----------------------------------\n\nYes, Cuttlefish natively supports Google Cloud and support for other cloud\nplatforms is planned.\n\nGet started\n-----------\n\nFor guidance on creating a Cuttlefish instance based on AOSP, see\n[Use Cuttlefish](/docs/devices/cuttlefish/get-started)."]]