通用核心映像 (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 二進位檔案(包括緊急旋轉修補程式)是否基於最新的程式碼庫建置?

    不行。Respin 僅包含已選取的每月認證核心之上的修補程式。這些重新調整包含 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 始終可以在變更日誌中找到問題描述和解決方案。