Cuttlefish 虚拟 Android 设备

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

Cuttlefish 的目标

  • 使平台和应用开发者不再依赖于物理硬件来开发和验证代码更改。
  • 通过与核心框架保持高度一致,以高保真度为重点来复制真实设备的基于框架的行为。
  • 支持 API 级别 28 之后的所有 API 级别。
  • 在各个 API 级别达到一致的功能水平,与物理硬件上的行为保持一致。
  • 实现规模化:

    • 能够并行运行多台设备。
    • 能够并发执行测试,实现高保真度且入门成本较低。
  • 提供可配置的设备,能够调整外形规格、RAM、CPU 等。

Cuttlefish 与其他设备的对比情况

Cuttlefish 和 Android 模拟器

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

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

Cuttlefish 和物理设备

Cuttlefish 虚拟设备与实体设备之间的主要区别在于硬件抽象层 (HAL) 级别,以及与任何自定义硬件互动的任何软件。除了硬件专用实现之外,您应该会发现 Cuttlefish 和实体设备表现出在功能上等效的行为。

Cuttlefish 有哪些益处?

您可以像与任何可能用于调试的其他 Android 设备互动一样与 Cuttlefish 互动。它会通过 adb 将自身注册为正常设备,您可以像与实体设备互动一样通过远程桌面与之互动。Cuttlefish 的用例非常广泛,涵盖应用测试、自定义系统构建测试等。

由于 Cuttlefish 力求实现框架保真度,因此可用于对您的框架或应用进行功能测试,在测试中没有无法模拟的物理硬件依赖项。

目前 Cuttlefish 通常如何用于测试?

Cuttlefish 在测试方面的一些常见应用包括:

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

我是否可以在云端托管 Cuttlefish?

可以,Cuttlefish 本身支持 Google Cloud,并计划支持其他云平台。

开始

如需获得有关基于 AOSP 创建 Cuttlefish 实例的指导,请参阅使用 Cuttlefish