通用系统映像 (GSI)

通用系统映像 (GSI) 是一种纯 Android 实现,采用未经修改的 Android 开源项目 (AOSP) 代码,可在各种 Android 设备上运行。

应用开发者可以安装并运行最新的 Android GSI,以便在各种现有 Android 设备上执行应用测试,并使用不同 Android 操作系统版本(包括开发者预览版和 Beta 版 build)中的 GSI。向验证和测试流程中添加 GSI 还有一些额外的好处:

  • 在更多实体设备上进行更广泛的测试
  • 有更多时间来解决应用兼容性问题
  • 有更多机会解决应用开发者报告的 Android 兼容性问题

GSI 项目是开源项目,可在每个 Android 版本发布之前提供更多方法来提高应用和操作系统的质量,从而帮助改善 Android 生态系统。

各种设备的 GSI 支持情况
图 1:GSI 可以安装在多种设备上,有时甚至适用于设备制造商并未提供自家系统映像的 Android 版本。

在所有安装 GSI 的设备上,GSI 的核心系统功能都相同。也就是说,GSI 不包含设备制造商自定义的功能。因此在以下情况下,您可能会遇到行为差异:

  • 涉及界面的互动
  • 需要更新的硬件功能的工作流

检查设备合规性

GSI 仅适用于具有以下特征的设备:

  • 引导加载程序已解锁。
  • 完全符合 Treble 要求。
  • 出厂时搭载 Android 9(API 级别 28)或更高版本。从较低版本升级到 Android 9 的设备不一定支持 GSI。

如需确定设备是否可以使用 GSI 以及应该安装哪个 GSI 操作系统版本,请执行以下操作:

  1. 运行以下命令来检查设备是否支持 Treble:

    adb shell getprop ro.treble.enabled

    如果响应为 false,表示设备不兼容 GSI,您不应继续执行操作。如果响应为 true,请继续执行下一步操作。

  2. 运行以下命令来检查设备是否支持跨版本安装:

    adb shell cat /system/etc/ld.config.version_identifier.txt \
    | grep -A 20 "\[vendor\]"

    在输出的 [vendor] 部分中查找 namespace.default.isolated

    如果该属性的值为 true,表示设备完全支持供应商原生开发套件 (VNDK),因此可以使用比设备端操作系统版本更高的任何 GSI 操作系统 (OS) 版本。请尽可能使用最新的 GSI 操作系统版本。

    如果该属性的值为 false,表示设备不完全兼容 VNDK,因此只能使用与设备端操作系统版本相同的 GSI。例如,如果搭载 Android 10(API 版本 29)的设备与 VNDK 不兼容,则只能加载 Android 10 GSI 映像。

  3. GSI CPU 架构类型必须与设备的 CPU 架构匹配。如需为 GSI 映像查找合适的 CPU 架构,请运行以下命令:

    adb shell getprop ro.product.cpu.abi

    通过该输出确定在刷写设备时要使用的 GSI 映像。例如,在 Pixel 5 上,输出会指明 CPU 架构是 arm64-v8a,因此您需要使用 arm64 类型的 GSI。

下载 GSI

有几种方法可以获得 GSI,具体取决于您的开发需求:

安装 GSI

GSI 的安装方式视设备而定。如需了解确切的工具和步骤,请咨询设备制造商。对于 Pixel 3 及更新型号的 Google Pixel 设备,有以下几种安装方式:

提供反馈

GSI 旨在帮助您在 Android 上验证应用。非常感谢您针对映像、工具以及在设备上使用 GSI 的过程提供反馈。

如有任何 bug 和功能请求要告知我们,请使用 GSI 的专用问题跟踪器组件

其他资源