本頁面說明如何建構 Android 核心 ABI 表示法並執行 ABI 監控。這項設定適用於 Android 14 更高。如要查看較舊版本,請參閱 較舊的核心版本。
另請參閱 Kleaf 參考文件: 支援 ABI 監控 (GKI)。 和 支援 ABI 監控 (裝置):
建構核心及其 ABI 表示法
下載 GKI 來源後 執行下列指令,建構 GKI 核心和 ABI 構件:
tools/bazel run //common:kernel_aarch64_abi_dist
這個指令會建構目前的 ABI 表示法,並將其複製到
out_abi/kernel_aarch64/dist/abi.stg
以及建構的核心和模組。
您可以在指令結尾指定 ABI 工具的額外引數
在 --
之後。例如,變更 ABI 的目的地和建構構件時,您
可以使用 --dist_dir
選項:
tools/bazel run //common:kernel_aarch64_abi_dist -- --dist_dir=out/dist
分析建構與參照表示法之間的 ABI 差異
在上方指令中執行的 //common:kernel_aarch64_abi_dist
目標。
這個程序會分析並回報建構和參考資源之間的 ABI 差異
位於 common/android/abi_gki_aarch64.stg
(定義位於
BUILD.bazel
)。
這些差異會顯示在建構的結束時,如
範例:
INFO: From [stg] Comparing Kernel ABI @//common:kernel_aarch64_abi_diff:
INFO: ABI DIFFERENCES HAVE BEEN DETECTED!
列印的報表取自位於
out_abi/kernel_aarch64/dist/abi_stgdiff/abi.report.short
及報表
其他格式的廣告。
自動化應使用建構指令的結束程式碼, 但兩者間的差異之處
請注意,
開發階段
分支版本 (包括 android-mainline
) 沒有參照 ABI 表示法。
如果沒有這項資訊,//common:kernel_aarch64_abi_dist
就不會偵測到任何差異。
更新參照 ABI 表示法
任何會影響核心 ABI 的變更,例如
符號清單更新
這些要求都必須反映在參照 ABI 表示法中
(common/android/abi_gki_aarch64.stg
,定義於
BUILD.bazel)。
如要進行這項操作,您必須執行下列指令:
tools/bazel run //common:kernel_aarch64_abi_update
這個指令會執行
分析 ABI 的差異,並更新
參照的表示法接著,您就能將更新後的 ABI 上傳到
與變更相同的修訂版本納入 ABI 與
在修訂訊息的 $DIST_DIR/abi.report.short
中回報。
ABI 監控和裝置目標
您只需為核心核心建構目標設定 ABI 監控功能。混合
直接使用以下程式碼編譯的建構設定:定義 base_kernel
GKI 核心只需新增追蹤裝置符號的支援功能
list。
ABI 定義應使用 GKI 版本更新。
另請參閱 Kleaf 參考文件: 支援 ABI 監控 (裝置):
舊版核心版本
Android 13
建構操作說明與
Android 14,但 ABI 格式是 XML 和
參考 ABI 表示法為 common/android/abi_gki_aarch64.xml
。
Android 13 以下版本
與 Android 13 一樣,ABI 格式是 XML。
較舊的核心使用 build.sh
,而非 Kleaf。如要進行 ABI 監控,則應使用
build_abi.sh
,這個參數可接受相同的環境變數自訂
建構為 build.sh
例如:
BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh
這個指令會建構核心,並將 ABI 表示法擷取至 OUT_DIR
(預設為 out_abi
) 子目錄,等同於
//common:kernel_aarch64_abi_dist
目標 Kleaf (請參閱
建構核心和 ABI 構件)。
參照 ABI 表示法會儲存在 android/abi_gki_aarch64.xml
中,
由 common/build.config.gki.aarch64
中的 ABI_DEFINITION
變數定義。
如果您需要更新核心 ABI 表示法,最便利的方法就是
使用 --update
和 --print-report
選項:
BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh --update --print-report
--print-report
會輸出檔案之間的 ABI 差異
和新產生的 ABI
--update
選項會覆寫參照 ABI 表示法。它也會
這個
符號清單更新
在已設定 KMI_SYMBOL_LIST
的裝置上使用 BUILD_CONFIG
時。