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

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

GKI 发布节奏

KMI 冻结后,GKI 按月发布一次。

Android 13 和 14 GKI 版本

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

GKI 每月认证版本入住截止日期GKI 预载就绪日期确认的?
十月2022 年 10 月 14 日2022 年 10 月 31 日是的
十一月2022 年 11 月 14 日2022 年 11 月 30 日是的
十二月2022 年 12 月 9 日2022 年 12 月 21 日是的
一月2023 年 1 月 17 日2023 年 1 月 31 日是的
二月2023 年 2 月 15 日2023 年 2 月 28 日是的
行进2023 年 3 月 15 日2023 年 3 月 31 日是的
四月2023 年 4 月 13 日2023 年 4 月 28 日是的
可能2023 年 5 月 17 日2023 年 5 月 31 日是的
六月2023 年 6 月 15 日2023 年 6 月 30 日是的
七月2023 年 7 月 18 日2023 年 7 月 31 日是的
八月2023 年 8 月 16 日2023 年 8 月 31 日是的
九月2023 年 9 月 14 日2023 年 9 月 29 日是的
十月2023 年 10 月 18 日2023 年 10 月 31 日是的
十一月2023 年 11 月 10 日2023 年 11 月 30 日是的
十二月2023 年 12 月 7 日2023 年 12 月 22 日是的
一月2024 年 1 月 16 日2024 年 1 月 31 日是的
二月2024 年 2 月 13 日2024 年 2 月 29 日是的
行进2024 年 3 月 13 日2024 年 3 月 29 日是的
四月2024 年 4 月 16 日2024 年 4 月 30 日是的
可能2024 年 5 月 14 日2024 年 5 月 31 日是的
六月2024 年 6 月 12 日2024 年 6 月 28 日是的
七月2024 年 7 月 16 日2024 年 7 月 31 日是的
八月2024 年 8 月 15 日2024 年 8 月 30 日是的
九月2024 年 9 月 17 日2024 年 9 月 30 日是的
十月2024 年 10 月 15 日2024 年 10 月 31 日是的
十一月2024 年 11 月 11 日2024 年 11 月 27 日是的
十二月2024 年 12 月 6 日2024 年 12 月 23 日是的

从 2024 年 1 月开始,我们将按照下表列出的指定每月节奏恢复每月发布android14-5.15

GKI 每月认证版本入住截止日期GKI 预载就绪日期确认的?
一月2024 年 1 月 16 日2024 年 1 月 31 日是的
二月2024 年 2 月 13 日2024 年 2 月 29 日是的
行进2024 年 3 月 4 日2024 年 3 月 15 日是的
四月2024 年 4 月 1 日2024 年 4 月 17 日是的
可能2024 年 5 月 1 日2024 年 5 月 17 日是的
六月2024 年 6 月 3 日2024 年 6 月 17 日是的
七月2024 年 7 月 1 日2024 年 7 月 15 日是的
八月2024 年 8 月 1 日2024 年 8 月 16 日是的
九月2024 年 9 月 2 日2024 年 9 月 16 日是的
十月2024 年 10 月 1 日2024 年 10 月 14 日是的
十一月2024 年 11 月 1 日2024 年 11 月 15 日是的
十二月2024 年 12 月 2 日2024 年 12 月 16 日是的

Android 12 GKI 发布

2023 年 5 月之后, android12-5.10 GKI 版本的发布周期为 2 个月,并在月中发布。下表仅适用于android12-5.10

GKI 每月认证版本入住截止日期GKI 预载就绪日期确认的?
七月2023 年 7 月 3 日2023 年 7 月 14 日是的
九月2023 年 9 月 1 日2023 年 9 月 15 日是的
十一月2023 年 11 月 3 日2023 年 11 月 17 日是的
一月2024 年 1 月 5 日2024 年 1 月 19 日是的
行进2024 年 3 月 4 日2024 年 3 月 15 日是的
可能2024 年 5 月 1 日2024 年 5 月 17 日是的

GKI 为 OEM 建立有效性

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

每周开发版本

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

随着更改的合并,GKI 二进制文件可从ci.android.com获取自助服务。每周构建不会经过认证,但可以用作开发和测试的基线。每周构建不能用于最终用户的生产设备构建。

每月认证版本

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

每个月,都会在签入截止日期(通常是该月的第二周构建)之后选择 GKI 每月发布候选者(未认证)。选择每月候选版本后,该月的版本将不会接受新的更改。在封闭窗口期内,只能修复导致测试失败的错误。候选版本经过质量保证(如GKI 资格部分所述),以确保通过参考设备和 Cuttlefish 构建的 GSI+GKI 合规性测试。

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

紧急修复流程

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

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

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

在请求重新旋转之前,请注意以下准则:

  • 仅在每月构建的首次公开发布启动后,才允许在发布分支上进行重新调整。

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

  • Android 安全公告 (ASB)定义的LTS 要求导致分支不合规时,该分支将被弃用。不接受对已弃用分支的重新调整请求。给定 GKI 版本分支的弃用日期包含在每月 GKI 版本构建说明中的Releases下。为了未来的规划,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 开发分支中挑选补丁并将补丁上传到每月发布分支。

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

    优先事项体外放射治疗
    P0 2个工作日
    P1 5个工作日
    P2 10个工作日
    P3 15个工作日
  • 您必须为每个发布分支提交单独的重新调整请求。例如,如果android12-5.10-2022-08android12-5.10-2022-09都需要重新旋转,则必须创建两个重新旋转请求。

  • 提供构建并将重新调整请求标记为已修复后,您不应重新打开重新调整请求来添加其他 CL。如果有其他补丁需要合并,您必须提交新的重新调整请求。

  • 对于考虑中的每个 CL,添加以下标签。如果没有此信息,重新旋转请求的进度将被阻止。

    • Bug :必须将 Bug ID 添加到每个 CL 的提交消息中。
    • Change-Id :必须与基础分支更改的 Change-Id 相同。
  • 如果重新调整请求需要您的响应,而您在三个工作日内未响应,则优先级将降低一级(例如, P0降级为P1 )。如果您两周内没有回复,该错误将被标记为“不会修复(已过时)”

提交重新调整请求

下图显示了重新旋转过程。当 OEM 合作伙伴(您)提交重新调整请求时,该流程开始。

紧急修复流程图 2.重新旋转过程

进入重新旋转过程:

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

GKI资质

GKI 构建的类型质量执行笔记
每周墨鱼测试
  • 开机
  • VTS 的子集
  • CTS 的子集
  • 未认证。仅用于测试和
    设备调出。
  • 不能用于启动设备。
每月(已认证)墨鱼测试
  • 开机
  • 虚拟交通系统
  • CTS
参考硬件测试
  • 开机
  • 虚拟交通系统
  • CTS
    重新旋转(已认证)墨鱼测试
    • 开机
    • 虚拟交通系统
    • CTS 的子集
    参考设备测试
    • 开机
    • 虚拟交通系统
    • 建立在 GKI 认证构建之上。
    • 合格后,该构建将得到认证。

    从哪里获取构建工件

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

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

    常见问题解答

    是否可以基于已发布的 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 不会对重新构建版本添加更改。这可以在变更日志(提交消息)中看到。谷歌并未透露其影响的具体设备,但 OEM 始终可以在变更日志中找到问题描述和解决方案。