Cuttlefish 虚拟 Android 设备

Cuttlefish 是一种可配置的虚拟 Android 设备,既可以远程运行(使用 Google Cloud Engine 等第三方云服务),也可以本地运行(在 Linux x86 和 ARM64 机器上)。

Cuttlefish 目标

  • 使平台和应用开发者摆脱对物理硬件的依赖,以便开发和验证代码更改。
  • 通过保持与核心框架的紧密一致,复制真实设备基于框架的行为,重点是高保真度。
  • 支持 28 之后的所有 API 级别。
  • 在所有 API 级别上提供一致的功能级别,与物理硬件上的行为保持一致。
  • 实现规模化

    • 提供并行运行多个设备的能力。
    • 以更低的入门成本实现高保真度的并发测试执行。
  • 提供可配置的设备,能够调整外形尺寸、RAM、CPU 等。

将 Cuttlefish 与其他设备进行比较

Cuttlefish 和 Android 模拟器

Cuttlefish 与 Android 模拟器有很多相似之处,但 Cuttlefish 保证与 Android 框架的完全保真度(无论是纯 AOSP 还是您自己树中的自定义实现)。在实际应用中,这意味着您应该期望 Cuttlefish 在操作系统级别对您的交互做出响应,就像使用相同的自定义或纯 Android 操作系统源代码构建的物理手机目标一样。

Android 模拟器的构建围绕着简化应用开发的用例,它包含许多功能钩子,以满足 Android 应用开发者的用例。如果您想使用自定义 Android 框架构建模拟器,这可能会带来挑战。如果您需要一个能够代表您的自定义平台/框架代码或主干 Android 的虚拟设备,那么 Cuttlefish 是理想的虚拟选择。它是代表 AOSP 开发当前状态的规范设备。

Cuttlefish 和物理设备

Cuttlefish 虚拟设备和物理设备之间的主要区别在于硬件抽象层 (HAL) 级别,以及与任何自定义硬件交互的任何软件。除了特定于硬件的实现之外,您应该期望 Cuttlefish 和物理设备之间具有功能等效的行为。

Cuttlefish 如何提供帮助?

您可以像使用任何其他可能用于调试的 Android 设备一样与 Cuttlefish 交互。它将通过 adb 将自身注册为普通设备,您可以像通过远程桌面与物理设备交互一样与它交互。用例很广泛,可以涵盖应用测试、自定义系统构建测试等。

由于 Cuttlefish 力求实现完全的框架保真度,因此它可以用于框架或应用的功能测试,在这些测试中,不存在无法模拟的物理硬件依赖项。

如今 Cuttlefish 通常如何用于测试?

Cuttlefish 的一些常见测试应用包括

  • CTS
  • 框架合规性
  • 持续集成测试
  • 自定义测试套件

我可以在云端托管 Cuttlefish 吗?

是的,Cuttlefish 原生支持 Google Cloud,并且计划支持其他云平台。

开始使用

有关基于 AOSP 创建 Cuttlefish 实例的指南,请参阅使用 Cuttlefish