Android 常用核心

Android 開放原始碼計畫通用核心 (也稱為 Android 一般核心或 ACK) 是下游 kernel.org 核心並包含修補程式 可能表示洩漏為 Android 社群的常見利益 長期支援 (LTS) 核心。這些修補程式可能包括:

  • 向後移植 Android 所需的上游功能 功能
  • 可用於 Android 裝置,但開發中上游的功能
  • 對其他生態系統合作夥伴有幫助的供應商/原始設備製造商 (OEM) 功能

android-mainline 是 Android 功能的主要開發分支版本。Linux 每當 Linus Torvalds 張貼android-mainline 或候選版。在 2019 年之前,Android 常用核心 方法是複製最近宣告的 LTS 核心,並將 Android 專用的修補程式。這項程序已在 2019 年變更,以建構新的 Android 版本 android-mainline 的通用核心。這個新模型可以避免 透過完成相同結果來轉送通訊埠及測試 Android 修補程式 android-mainline 需要經過大量持續測試, 模型可確保在發布當天開始提供高品質的核心。

當宣告新的 LTS 時,對應的通用核心會分支 android-mainline起。如此一來,合作夥伴就能在 從 android-mainline 合併,藉此宣告 LTS 版本。在 建立新的通用核心分支版本後,合作夥伴即可順暢地變更合併作業 新分支版本

其他常見的核心分支版本會收到來自相關聯核心的定期合併作業 LTS 核心。 這些合併作業通常會在 LTS 版本發布後立即完成。適用對象 例如:當張貼 Linux 6.1.75 時,它已合併為 6.1 版共 核心 (android14-6.1)。我們強烈建議合作夥伴 更新核心,以便取得最新的 LTS 和 Android 特定錯誤修正。

ACK KMI 核心分支版本

GKI 核心有穩定的核心模組介面。KMI 具有獨一無二的 會由核心版本和 Android 平台版本辨識 稱為 ANDROID_RELEASE-KERNEL_VERSION。 例如 6.1 GKI Android 14 的核心名稱為 android14-6.1。適用對象 Android 15 (Android 開放原始碼計畫實驗功能),GKI 核心 android15-6.6 之前為 。

功能與啟動核心

在 Android 15 (AOSP 實驗功能) 之前,前三個核心中的任一種 啟用狀態開頭是 Android 15 (Android 開放原始碼計畫實驗) 中,最新的兩個核心版本可 用於啟動裝置應用程式的啟動核心 Android 15 (Android 開放原始碼計畫實驗功能) 為 android15-6.6android14-6.1

因為更新平台時不需要升級核心 缺少平台專用最新功能的核心版本 依舊能用來啟動裝置因此專為新聞機構設計的核心 Android 14 等裝置 (例如 android14-6.1) 支援 再從這個平台升級至 Android 15 (Android 開放原始碼計畫實驗功能)。

Android 平台版本 啟動核心 功能核心
Android 15 (Android 開放原始碼計畫實驗功能) (2024) android15-6.6
android14-6.1
android15-6.6
Android 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.101
android14-6.1
android14-5.15
Android 13 (2022) android13-5.15
android13-5.10
android12-5.101
android12-5.41
android11-5.41
android13-5.15
android13-5.10
Android 12 (2021) android12-5.10
android12-5.4
android11-5.41
android-4.19-stable
android12-5.10
android12-5.4
Android 11 (2020) android11-5.4
android-4.19-stable
android11-5.4
android-4.19-stable

1 如果相關聯的 BSP, 這個平台版本已更新。一般而言, Android 版本資訊 核心必須大於或等於 目標 FCM 版本。 詳情請見 供應商介面物件 - 比對核心分支版本

常見核心階層

android-mainline 的分支版本

圖 1 顯示一般核心階層的頂層。

透過 android-mainline 核心建立通用核心

圖 1. 透過 android-mainline 核心建立通用核心

請注意,新的 Android 通用核心 android14-6.1 是從 2022 年 android-mainline。在 2023 年,當宣告下一個 LTS 時 android15-6.6 已從 android-mainline 分支。

如圖 1 所示,每個核心版本都可以是兩個 GKI 核心的基礎。 舉例來說,5.15 版的兩個核心是 android13-5.15android14-5.15。 這兩個版本都是 各自平台版本的功能核心這個 也是 5.10 版本android12-5.10 是在 LTS 之前建立 宣告,且 android13-5.10 在核心上從 android12-5.10 分支 達到 2021 年春季的完整功能里程碑,讓我們得以開發 Android 13。從 Android 開始 15 (Android 開放原始碼計畫實驗功能) (2024),僅有 每個核心版本一個新的 GKI 核心 (沒有 android15-6.1 核心)。

ACK KMI 分支版本生命週期

確認 KMI 分支版本的生命週期如下方圖 2 所示。

6.6 ACK KMI 分支版本生命週期

圖 2. 6.6 ACK KMI 分支版本生命週期

為了清楚說明開發程序和分支的生命週期,圖 2 著重於 6.6 的 ACK KMI 分支版本。

每個 ACK KMI 分支都會循環通過圖 2 所示的三個階段,如圖 2 所示 每條支線都有不同的顏色如圖所示,系統會定期合併 LTS,無論如何都沒問題 階段

開發階段

確認 KMI 分支版本建立後會進入開發階段 (標示為 dev)。 平台發布。在圖 2 中,android15-6.6 是在 6.6 版的 宣告為新的上游 LTS 核心。

穩定階段

當 ACK KMI 分支宣告完成時,就會進入 穩定階段 (在圖 2 中標示為 stable)。合作夥伴功能和 系統仍接受修正錯誤,但啟用 KMI 追蹤功能可偵測任何變更 這會影響介面在這個階段,接受 KMI 破壞性變更 而 KMI 的定義是以預先設定的時間間隔 (通常為每兩個兩次) 更新 週)。詳情請參閱 GKI 總覽: 深入瞭解 KMI 監控工具

KMI 凍結階段

將新的平台版本推送至 Android 開放原始碼計畫之前,ACK KMI 分支版本會凍結 並在分支的生命週期內保持凍結狀態也就是說 除非發現重大安全性問題,否則即接受 KMI 破壞性變更 無法緩解壓力或影響到穩定的 KMI避免使用 KMI 導致部分從 LTS 合併的修補程式 。

當 ACK KMI 分支版本凍結時,即可修正錯誤並接受合作夥伴功能 只要現有的 KMI 通用核心沒有損壞即可。KMI 可延長 內含新匯出符號的介面,前提是介面須由目前的 KMI 不受影響將新介面新增至 KMI 後,會立即出現它們。 且不會因日後變更而損毀。

例如,某項變更將欄位新增至 KMI 介面使用的結構 常見的核心變動,因為介面定義會變更介面定義:

struct foo {
  int original_field1;
  int original_field2;
  int new_field;  // Not allowed
};

int do_foo(struct foo &myarg)
{
  do_stuff(myarg);
}
EXPORT_SYMBOL_GPL(do_foo);

不過,您可以新增函式:

struct foo2 {
  struct foo orig_foo;
  int new_field;
};

int do_foo2(struct foo2 &myarg)
{
  do_stuff2(myarg);
}
EXPORT_SYMBOL_GPL(do_foo2);

在 GKI 核心的生命週期內,與使用者空間的回溯相容性是 以便安全地將核心用於 Android 平台 即可釋出裝置。持續測試先前的版本 確保維持相容性在此圖 2 中,android15-6.6 核心適用於 Android 15 (Android 開放原始碼計畫實驗) 裝置及以上版本 裝置。由於 Android 平台版本 也與先前的版本相容 android14-6.1 核心可用於 Android 15 (AOSP 實驗功能) 裝置發布或升級。

KMI 產生編號

如果在穩定階段或安全性問題期間有 LTS 合併作業,或 才能接受 KMI 變更修補程式。 build.config.common 中記錄的 KMI 產生編號會遞增。 您可以使用 uname 指令找到目前的 KMI:

$ uname -r
6.6.30-android15-6-g86d10b30f51f

平台發布後的數字為 KMI 產生版本 (在本例中為 6)。

如果 KMI 產生值有所變更,核心與供應商模組不相容 與先前一代的 KMI 相符,因此必須重建模組並 與核心同步更新。KMI 凍結後,KMI 產生變更 預期很少出現

核心之間的相容性

同一個 LTS 系列中核心之間的相容性需求 從全新的 GKI 核心開始著手

GKI 核心

GKI 核心保有與所有 Android 平台的回溯相容性 支援核心版本的多個版本此外,Android 平台 版本與先前版本的 GKI 核心回溯相容。以下內容 您就能安全地使用android14-6.1 在搭載 Android 14 (2023) 的裝置上 Android 15 (Android 開放原始碼計畫實驗功能) (2024)。相容性經過驗證 針對 GKI 核心持續進行 VTS 和 CTS 測試,並納入所有支援版本。

KMI 是穩定版,因此核心可以更新,不必重新建構 核心模組中的一個部分

不同的 GKI 核心不會維持 KMI 相容性。所以 例如,android14-6.1 核心無法替換為 android15-6.6 而不必重新建構所有模組。

GKI 核心僅適用於其初始和後續版本。 不適用於較舊的版本。所以 執行中的開發人員不支援 android15-6.6 核心 Android 14 (2023)。

相容性矩陣

下表顯示各 Android 支援及測試的核心版本 平台發布。

Android 平台版本 支援升級的核心 支援啟動的核心
Android 15 (Android 開放原始碼計畫實驗功能) (2024) android15-6.6
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android15-6.6
android14-6.1
Android 14 (2023) android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
Android 13 (2022) android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
Android 12 (2021) android12-5.10
android12-5.4
android11-5.4
android-4.19-stable
android-4.19-stable
android11-5.4
android12-5.4
android12-5.10
Android 11 (2020) android11-5.4
android-4.19-stable
android11-5.4
android-4.19-stable

支援生命週期和安全性修補程式

ACK 會接收來自上游的 LTS 合併,以及 Android 特定程式碼的錯誤修正。 這些修正項目已包含每月 Android 版本提及的所有核心安全性修補程式。 與 ACK 相關的安全性公告。

ACK 的支援時間可能會比對應的上游穩定核心長 位於 kernel.org 。在此情況下,Google 提供了更長時間的支援服務,直到這裡顯示的服務終止日期 (EOL) 為止 專區。核心停止運作後,將不再 都屬於安全漏洞。

從核心 6.6 開始,穩定版核心的支援生命週期為 4 年。

下表顯示支援 ACK 的生命週期:

ACK 分支版本 推出
日期
支援
生命週期
(年)
產品停產 (EOL)
android-4.19-stable 2018-10-22 6 2025-01-01
android11-5.4 2019-11-24 6 2026-01-01
android12-5.4 2019-11-24 6 2026-01-01
android12-5.10 2020-12-13 6 2027-07-01
android13-5.10 2020-12-13 6 2027-07-01
android13-5.15 2021-10-31 6 2028-07-01
Android14-5.15 2021-10-31 6 2028-07-01
android14-6.1 2022-12-11 6 2029-07-01
Android15-6.6 2023-10-29 4 2028-07-01

常見核心測試

常見核心除了下游之外,還透過數種 CI 系統測試。 並由供應商進行測試

Linux 核心功能測試

Linux 核心功能測試 (LKFT) 啟動各種測試套件,包括 kselftest、LTP、VTS 和 CTS 實體 arm32 和 arm64 裝置組合。你可以在這裡找到近期測試結果 請按這裡

核心持續整合測試

KernelCI 建構與啟動測試 每當將新的修補程式提交至一般核心分支時就會啟動。數個 數百個建構設定都經過測試,並在各種主機板上啟動。近期記錄 找到 Android 核心的測試結果 請按這裡

Android 預先提交與提交後測試

預先提交測試的用途是避免將錯誤導入 Android 常用核心。你可以在「檢查」部分找到測試結果摘要「變更」分頁。

執行 Android 提交後測試 。ci.android.com 中的 Android 通用核心分支版本提交新修補程式時,針對 Android 通用核心分支版本的新發布版本推出新修補程式。輸入 系統會以 aosp_kernel 做為 ci.android.com 中的部分分支版本名稱,此時會看到包含 已有結果。例如,找到與「android-mainline」相符的結果 這裡。點選特定版本時,您會在 Test Results 分頁中看到測試狀態。

如果 test-mapping 定義的測試,Android 平台來源樹狀結構中的測試群組 kernel-presubmit 將以預先提交 Android 核心分支版本的形式執行。例如,下列 test/vts/tests/kernel_proc_file_api_test/TEST_MAPPING 中的設定會在 Android 通用核心程式碼登錄時,啟用 vts_kernel_proc_file_api_test 做為預先修補程式測試。

{
  "kernel-presubmit": [
    {
      "name": "vts_kernel_proc_file_api_test"
    }
  ]
}

0 天測試

0 天測試會執行修補型測試 。集成 執行開機、功能與效能測試。加入公開群組 cros-kernel-buildreports

測試矩陣

Android 通用核心 Android 平台版本 測試套件
主機 15 14 13 12 11 10 LKFT 核心持續整合 預先提交 提交後 0 天
android-mainline
android15-6.6
android14-6.1
android14-5.15
android13-5.15
android13-5.10
android12-5.10
android12-5.4
android11-5.4
android-4.19-stable

為 Android 常用核心貢獻一己之力

一般來說,功能開發應該在主 Linux 上進行,而不是 Android 常用核心。我們強烈建議使用上游開發, 便可輕鬆移植到 可視需要選擇分支版本Android 核心團隊是 ,也很樂意協助後續作業,以造福 Android 生態系統。

將修補程式提交至 Gerrit 並遵守這些 捐款規範