通用内核映像 (GKI) 发布流程

本页面介绍了 GKI 的发布方式,包括每周、每月和带外紧急发布。本文档旨在为 OEM 提供有关在何处获取 GKI 以及带外紧急修复流程的指南。OEM 还可以使用GKI 开发来详细了解他们如何与 Android 内核团队合作,以优化其产品的 GKI 内核。

GKI 发布节奏

GKI 在 KMI 冻结后每月发布一次。

Android 13、14 和 15 GKI 版本

下表仅适用于 android13-5.10android13-5.15android14-5.15

GKI 每月认证版本 代码提交截止日期 GKI 预加载就绪日期 已确认?
十一月 2024 年 11 月 11 日 2024 年 11 月 27 日
一月 2025 年 1 月 14 日 2025 年 1 月 31 日
三月 2025 年 3 月 14 日 2025 年 3 月 31 日
五月 2025 年 5 月 16 日 2025 年 5 月 30 日

下表仅适用于 android14-6.1android15-6.6

GKI 每月认证版本 代码提交截止日期 GKI 预加载就绪日期 已确认?
十月 2024 年 10 月 1 日 2024 年 10 月 14 日
十一月 2024 年 11 月 1 日 2024 年 11 月 15 日
十二月 2024 年 12 月 2 日 2024 年 12 月 16 日
一月 2025 年 1 月 6 日 2025 年 1 月 22 日
二月 2025 年 2 月 3 日 2025 年 2 月 17 日
三月 2025 年 3 月 3 日 2025 年 3 月 17 日
四月 2025 年 4 月 1 日 2025 年 4 月 16 日
五月 2025 年 5 月 1 日 2025 年 5 月 16 日
六月 2025 年 6 月 2 日 2025 年 6 月 16 日

Android 12 GKI 版本

2024 年 5 月之后,android12-5.10 GKI 版本以季度为单位发布,并在月中发布。下表仅适用于 android12-5.10

GKI 每月认证版本 代码提交截止日期 GKI 预加载就绪日期 已确认?
十一月 2024 年 11 月 1 日 2024 年 11 月 15 日
二月 2025 年 2 月 3 日 2025 年 2 月 17 日
五月 2025 年 5 月 1 日 2025 年 5 月 16 日

OEM 的 GKI 版本有效期

OEM 可以使用最近发布的 Android GKI。只要符合 Android 安全公告 (ASB) 中的 LTS 要求,OEM 就可以使用 GKI 认证版本发布产品。

每周开发版本

版本使用 Cuttlefish 进行测试,以确保它们通过最低质量标准

GKI 二进制文件可通过 Android CI 以自助服务方式获取,并随着更改的合并而更新。每周构建版本未经认证,但可以用作开发和测试的基准。每周构建版本不能用于最终用户的生产设备构建。

每月认证版本

GKI 每月版本包含经过测试的 boot.img,其中包含 Google 插入的证书,以证明二进制文件是从已知的源代码基线构建的。

每个月,在代码提交截止日期之后,会选择一个 GKI 月度候选版本(未经认证),通常是该月的第二个每周构建版本。在月度候选版本选定后,新的更改将不会被接受到该月的版本中。在封闭窗口期内,只能解决导致测试失败的错误。候选版本会进行质量保证(如 GKI 资质认证部分中所述),以确保合规性测试在参考设备以及 Cuttlefish 上的 GSI+GKI 构建版本上通过。

GKI 发布节奏时间表 图 1. GKI 发布时间表

紧急重新发布流程

重新发布是指在公开发布 GKI 内核后,重新合并、重新构建、重新测试和重新认证二进制文件的过程。在以下任何情况下,您都可以请求重新发布认证的二进制文件

  • 更新符号列表。
  • 应用针对错误的修复程序,包括在运营商实验室批准期间发现的错误。
  • 添加供应商钩子
  • 应用针对现有功能的补丁。
  • 应用安全补丁(6 个月后)。

安全补丁会在分支发布后的 6 个月内自动合并到发布分支中。在 6 个月截止日期之后,您必须请求重新发布才能将安全补丁应用于分支。

重新发布请求指南

在请求重新发布之前,请注意以下指南

  • 仅在月度构建版本的首次公开发布后,才允许在发布分支上进行重新发布。

  • 仅在初始公开发布后的最多六个月内接受给定发布分支的重新发布请求。六个月后,只有在Android 安全公告中引用的安全补丁才有资格重新发布。

  • LTS 要求(由 Android 安全公告 (ASB) 定义)导致分支不合规时,该分支将被弃用。不接受已弃用分支的重新发布请求。给定 GKI 发布分支的弃用日期包含在每月 GKI 发布构建说明的 版本下。为了未来的规划,LTS 要求每年在 5 月和 11 月更新。例如,android12-5.10-2023-07 分支 (5.10.177) 在 2024 年 5 月 1 日之后不再支持重新发布,因为 android12-5.10-2023-07 分支 (5.10.177) 不符合 ASB-2024-05 的 LTS 要求。

  • 重新发布仅适用于紧急错误修复、符号列表更新或应用补丁以修复现有功能。

  • 所有要进入月度发布分支的补丁都必须已合并到主 GKI 开发分支中。例如,如果需要针对 android12-5.10-2022-09 的重新发布补丁,则该补丁必须已合并到 android12-5.10 中。

  • 您必须从主 GKI 开发分支中 cherry-pick 补丁,并将补丁上传到月度发布分支。

  • 在重新发布请求中,您必须为请求分配优先级(紧急程度)。此优先级有助于 GKI 团队及时更好地帮助合作伙伴。对于紧急或时间敏感的请求,请将优先级标记为 P0。对于 P0 和 P1 请求,您还必须证明紧急性的合理性。下表提供了错误优先级和解决时间 (ESRT) 的映射

    优先级 ESRT
    P0 2 个工作日
    P1 5 个工作日
    P2 10 个工作日
    P3 15 个工作日
  • 您必须为每个发布分支提交单独的重新发布请求。例如,如果 android12-5.10-2022-08android12-5.10-2022-09 都需要重新发布,则必须创建两个重新发布请求。

  • 在提供构建版本且重新发布请求标记为已修复后,您不应重新打开重新发布请求以添加其他 CL。如果需要合并其他补丁,则必须提交新的重新发布请求。

  • 对于正在考虑的每个 CL,添加以下标记。

    • Bug:必须将错误 ID 添加到每个 CL 的提交消息中。
    • Change-Id:必须与基本分支更改的 Change-Id 相同。
  • 如果重新发布请求需要您响应,而您在三个工作日内未响应,则优先级将降低一个级别(例如,P0 降级为 P1)。如果您两周未响应,则该错误将标记为 Won't Fix (Obsolete)

提交重新发布请求

下图显示了重新发布流程。该流程从 OEM 合作伙伴(您)提交重新发布请求开始。

紧急重新发布流程 图 2. 重新发布流程

要进入重新发布流程

  1. 填写 GKI 重新发布请求表单。并立即联系您的 Google 技术客户经理。此表单会创建一个 GKI 重新发布请求错误。重新发布请求错误对您(请求者)、GKI 团队以及您添加到错误抄送列表中的特定人员可见。
    • 如果您已修复错误,则请求应指向 AOSP 中的补丁提交,以便 Google 可以对其进行审核。如果提交补丁不可行,则必须将补丁作为文本文件附加到请求中。
    • 如果您没有修复程序,则请求必须包含尽可能多的信息,包括内核版本号和日志,以便 Google 可以帮助调试问题。
  2. Google GKI 团队会审核请求并批准,如果需要更多信息,则会将其分配回给您。
  3. 在修复程序达成一致后,Google GKI 团队会对更改进行代码审核 (CR+2)。审核开始 ESRT 时间范围。GKI 团队合并、构建、测试回归并认证更改。
  4. 二进制文件发布到 ci.android.com。ESRT 时间范围结束,Google GKI 团队将请求标记为已修复,并引用重新发布构建版本。重新发布构建版本也会发布在通用内核映像 (GKI) 发布版本页面上。

GKI 资质认证

GKI 构建版本类型 质量执行 备注
每周 Cuttlefish 测试
  • 启动
  • VTS 子集
  • CTS 子集
  • 未经认证。仅用于测试和
    设备启动。
  • 不能用于发布设备。
每月(已认证) Cuttlefish 测试
  • 启动
  • VTS
  • CTS
参考硬件测试
  • 启动
  • VTS
  • CTS
重新发布(已认证) Cuttlefish 测试
  • 启动
  • VTS
  • CTS 子集
参考设备测试
  • 启动
  • VTS
  • 基于 GKI 认证构建版本构建。
  • 构建版本在资质认证后获得认证。

在哪里获取构建工件

所有版本的工件都可以从 ci.android.com 获取。

您可以在Android 持续集成仪表板上找到有关 CI 的更多信息,包括测试结果。

常见问题解答

以下是与 GKI 发布流程相关的一些常见问题。

是否可以基于已发布的 GKI 构建新的 GKI 二进制文件?

可以,这称为重新发布。只要请求重新发布的已发布 GKI 构建版本符合 Android 安全公告 (ASB) 中的 LTS 要求,就支持重新发布流程。

是否可以重现 GKI 二进制文件?

可以,这是一个示例

GKI 2.0
5.10 kernel prebuilts from build 7364300
https://ci.android.com/builds/submitted/7364300/kernel_aarch64/latest

要重现该示例,请下载 manifest_$id.xml 并执行以下命令

repo init -u https://android.googlesource.com/kernel/manifest
mv manifest_7364300.xml .repo/manifests
repo init -m manifest_7364300.xml --depth=1
repo sync
# build the GKI images
# You may want to use LTO=thin to build faster for development
BUILD_CONFIG=common/build.config.gki.aarch64 build/build.sh
# (optional) build virtual platform modules
BUILD_CONFIG=common-modules/virtual-device/build.config.virtual_device.aarch64 build/build.sh

您可以从 out/.../dist 检索您的 GKI 工件副本。

GKI 二进制文件(包括紧急重新发布补丁)是否已在最新代码库上构建?

否。重新发布仅包含位于已选择的每月认证内核之上的补丁。这些重新发布包含 OEM 在重新发布窗口期间报告的所有发布阻止错误修复,仅此而已。请参阅以下示例,了解这种情况是如何发生的。

  • OEM1 和 OEM2 决定使用 2021 年 11 月的 GKI 二进制文件版本。
  • OEM1 和 OEM2 发现需要补丁才能支持的问题。这些补丁可能不同,也可能相同。
  • 2021 年 11 月二进制文件之上的重新发布具有 OEM1 和 OEM2 在重新发布窗口期间报告的发布阻止修复程序,但仅此而已。
  • 第二个要点中提到的问题也包含在后续的 GKI 月度版本中。

10 月份的重新发布包含所有 OEM 提交的补丁,但其他 OEM 补丁会影响我们,因为它们尚未针对我们的产品进行专门测试。是否可以仅包含我们的补丁?

这是不可能的。“按 OEM”重新发布路径不具有可扩展性。相反,GKI 团队会仔细审查每个进入重新发布构建版本的更改,并在创建新构建版本之前使用所有可用的硬件测试这些更改。如果 GKI 团队发现问题特定于 OEM、设备或型号,则 GKI 团队可以确保更改添加的代码仅在受影响的设备、型号或 SKU 上执行。

统一重新发布的主要好处是,每个使用相同发布基线的设备都彼此受益,尤其是在他们发现的错误是通用错误并且适用于所有用户的情况下。运营商测试中发现的核心内核错误是此概念的一个具体示例。

在某些情况下,Google 是否会提供有关 OEM 补丁和问题场景的具体信息,以便 OEM 可以评估使用其产品实施补丁的影响和风险?

在问题得到理解并且收集到所有详细信息之前,Google 永远不会将更改添加到重新发布构建版本中。这在变更日志(提交消息)中可见。Google 不会透露它影响的特定设备,但 OEM 始终可以在变更日志中找到问题描述和解决方案。