通用系统映像 (GSI) 是一个“纯 Android”实现,采用未经修改的 Android 开源项目 (AOSP) 代码,可在各种 Android 设备上运行。
图 1 各种设备对 GSI 的支持情况。
从 Android 9(API 级别 28)开始,通用系统映像 (GS) 在整个 Android 发布周期内都可供应用开发者使用。作为应用开发者,您可以在各种现有的 Android 设备上以及在不同的 Android 操作系统发行阶段(包括预览版和测试版阶段)安装并运行最新的 Android GSI,以执行应用测试!这样一来,您就可以比以往更早开始在更大范围内测试应用:
- 使测试覆盖到更多的现实设备
- 有更多时间来解决应用兼容性问题
- 有更多机会来解决应用开发者报告的与 Android 操作系统不兼容的问题
注意:您安装的 GSI 版本会高于设备上当前安装的 Android 版本。
GSI 项目可以在下一个操作系统版本发布之前,提供更多方法来提高应用和操作系统的质量,从而帮助改善 Android 生态系统。该项目也是开源的。
GSI 中包含所有搭载 Android 9 及更高版本的设备中的核心系统功能。换句话说,GSI 中不包含设备制造商的定制。但在以下情况下,您可能会遇到行为差异:
- 涉及界面的互动。
- 需要更新的硬件功能的工作流。
检查设备合规性
GSI 仅适用于具有以下特征的设备:
- 引导加载程序已解锁。
- 完全符合 Treble 要求。
- 出厂时搭载 Android 9(API 级别 28)或更高版本。从较低版本升级到 Android 9 的设备不一定支持 GSI。
|警告:尝试将 GSI 刷写到不符合要求的设备上,可能会导致设备无法启动。在刷写之前请务必确认设备符合要求,并按照设备制造商提供的步骤进行安装。GSI 不支持回滚。要还原到原始系统,您需要一种恢复方法和原始系统 ROM。
|
要确定设备是否可以使用 GSI 以及应该安装哪个 GSI 操作系统版本,请执行以下操作:
-
运行以下命令来检查是否支持 Treble:
adb shell getprop ro.treble.enabled
如果响应为 false,则表示设备不兼容 GSI,您不应继续执行操作。如果响应为 true,请继续执行下一步操作。
-
运行以下命令来检查是否支持跨版本安装:
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。例如,如果不兼容 VNDK 的 Android 9(API 版本 28)设备,只能加载 Android 9 GSI 映像。
-
GSI CPU 架构类型必须与设备的 CPU 架构匹配。要为 GSI 映像查找合适的 CPU 架构,请运行以下命令:
adb shell getprop ro.product.cpu.abi
通过该输出确定在刷写设备时要使用的 GSI 映像。例如,在 Pixel 3 上,输出会表明 CPU 架构是 arm64-v8a,因此您需要使用 arm64 类型的 GSI。
下载 GSI 映像
OEM 不得使用此处列出的这些 GSI 版本来运行和提交合规性测试。OEM 应该继续联络现有的沟通渠道(例如其客户技术支持)来开展与合规性测试有关的活动。
有几种方法可以获得 GSI,具体取决于您的开发需求:
- 如果需要 Android 10 GSI 映像,请从 GSI 发布页面下载。
- 如果需要 Android 9 GSI 源代码,请从 AOSP 下载并构建您的 GSI 映像。
- 如果需要不含 GMS 应用的预构建 GSI 映像,请从 AOSP CI 网站下载。
安装 GSI 映像
|注意:如果您的设备已经采用了 Android 启动时验证 (AVB),请在刷写 GSI 之前,先下载并刷写以下映像以停用 AVB:vbmeta.img
|
安装 GSI 的方法取决于设备。如需了解确切的工具和步骤,请咨询设备制造商。对于 Pixel 3 和更高版本的设备,有以下几种安装方法:
向我们提供反馈
GSI 映像有助于在 Android 上验证应用。欢迎您就映像、工具以及在设备上启用 GSI 的流程向我们提供反馈。
要向我们报告错误或功能请求,请使用专门的问题跟踪器组件。