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.6
和 android14-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 顯示一般核心階層的頂層。
圖 1. 透過 android-mainline 核心建立通用核心
請注意,新的 Android 通用核心 android14-6.1
是從
2022 年 android-mainline
。在 2023 年,當宣告下一個 LTS 時
android15-6.6
已從 android-mainline
分支。
如圖 1 所示,每個核心版本都可以是兩個 GKI 核心的基礎。
舉例來說,5.15 版的兩個核心是 android13-5.15
和 android14-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 所示。
圖 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
|
android15-6.6
|
Android 14 (2023) |
android14-6.1
|
android14-6.1
|
Android 13 (2022) |
android13-5.15
|
android13-5.15
|
Android 12 (2021) |
android12-5.10
|
android-4.19-stable
|
Android 11 (2020) |
android11-5.4
|
android11-5.4
|
支援生命週期和安全性修補程式
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
|
✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android13-5.15
|
✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android12-5.10
|
✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android11-5.4
|
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
android-4.19-stable
|
✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
為 Android 常用核心貢獻一己之力
一般來說,功能開發應該在主 Linux 上進行,而不是 Android 常用核心。我們強烈建議使用上游開發, 便可輕鬆移植到 可視需要選擇分支版本Android 核心團隊是 ,也很樂意協助後續作業,以造福 Android 生態系統。