Trang này mô tả cách tạo bản trình bày ABI của nhân Android và chạy tính năng giám sát ABI. Tính năng này áp dụng cho Android 16 trở lên. Đối với các phiên bản thấp hơn, hãy tham khảo bài viết Trình giám sát ABI các phiên bản nhân trước.
Hãy xem thêm tài liệu tham khảo về Kleaf: Hỗ trợ giám sát ABI (GKI) và Hỗ trợ giám sát ABI (Thiết bị).
Tạo nhân và bản trình bày ABI của nhân
Sau khi tải nguồn GKI xuống hãy chạy lệnh sau để tạo nhân GKI và các cấu phần phần mềm ABI:
tools/bazel run //common:kernel_aarch64_abi_distLệnh này sẽ tạo bản trình bày ABI hiện tại và sao chép bản trình bày đó vào $DIST_DIR/abi.stg cùng với nhân và các mô-đun đã tạo. $DIST_DIR
mặc định là out_abi/kernel_aarch64_abi_dist/dist.
Bạn có thể chỉ định các đối số bổ sung cho công cụ ABI ở cuối lệnh sau --. Ví dụ: để thay đổi đích đến cho ABI (Giao diện nhị phân ứng dụng) và cấu phần phần mềm bản dựng, bạn có thể sử dụng tuỳ chọn --destdir:
tools/bazel run //common:kernel_aarch64_abi_dist -- --destdir=out/distPhân tích sự khác biệt về ABI giữa bản dựng và bản trình bày tham chiếu
Mục tiêu //common:kernel_aarch64_abi_dist được thực thi trong lệnh trước sẽ phân tích và báo cáo mọi sự khác biệt về ABI được tìm thấy giữa bản dựng và bản trình bày tham chiếu nằm tại common/gki/aarch64/abi.stg (được xác định trong BUILD.bazel). Những điểm khác biệt này được in ra ở cuối bản dựng, như trong ví dụ sau:
INFO: From [stg] Comparing Kernel ABI @//common:kernel_aarch64_abi_diff:
INFO: ABI DIFFERENCES HAVE BEEN DETECTED!
Báo cáo được in ra đến từ cấu phần phần mềm bản dựng nằm tại $DIST_DIR/abi_stgdiff/abi.report.short cùng với các báo cáo ở định dạng khác.
Tính năng tự động hoá nên sử dụng mã thoát của lệnh tạo. Mã này khác 0 nếu tìm thấy điểm khác biệt.
Xin lưu ý rằng
các nhánh giai đoạn phát triển, bao gồm cả android-mainline, không có bản trình bày ABI tham chiếu.
Nếu không có bản trình bày này, //common:kernel_aarch64_abi_dist sẽ không phát hiện được điểm khác biệt nào.
Cập nhật bản trình bày ABI tham chiếu
Mọi thay đổi ảnh hưởng đến ABI của nhân, chẳng hạn như bản
cập nhật danh sách ký hiệu,
cần được phản ánh trong bản trình bày ABI tham chiếu
(common/gki/aarch64/abi.stg, được xác định trong
BUILD.bazel).
Để thực hiện việc này, bạn cần chạy lệnh sau:
tools/bazel run //common:kernel_aarch64_abi_updateLệnh này thực hiện mọi thao tác trong bước
Phân tích sự khác biệt về ABI và cập nhật thêm
bản trình bày tham chiếu trong các nguồn. Sau đó, bạn có thể tải ABI đã cập nhật lên trong cùng một cam kết với thay đổi. Đưa các điểm khác biệt về ABI trong báo cáo từ $DIST_DIR/abi_stgdiff/abi.report.short vào thông báo cam kết.
Giám sát ABI và mục tiêu thiết bị
Bạn chỉ cần định cấu hình tính năng giám sát ABI cho các mục tiêu bản dựng nhân cốt lõi. Các cấu hình bản dựng hỗn hợp (cấu hình xác định base_kernel) biên dịch trực tiếp bằng
nhân GKI chỉ cần thêm tính năng hỗ trợ theo dõi danh sách ký hiệu thiết bị.
Bạn nên cập nhật định nghĩa ABI bằng bản dựng GKI.
Hãy xem thêm tài liệu tham khảo về Kleaf: Hỗ trợ giám sát ABI (Thiết bị).
Trình giám sát ABI các phiên bản nhân trước (Android 15 trở xuống)
Đối với các phiên bản nhân trước, hướng dẫn tạo và giám sát ABI sẽ khác nhau như sau.
Android 15 và 14
Hướng dẫn này hầu như giống với Android 16, ngoại trừ việc bản trình bày ABI tham chiếu là common/android/abi_gki_aarch64.stg và $DIST_DIR mặc định là out_abi/kernel_aarch64/dist.
Android 13
Bạn có thể tạo Android 13 bằng Kleaf hoặc bằng các tập lệnh tạo cũ.
Đối với Kleaf, hướng dẫn này giống với Android 14, ngoại trừ việc định dạng ABI là XML và bản trình bày ABI tham chiếu là common/android/abi_gki_aarch64.xml.
Đối với các tập lệnh tạo cũ, hướng dẫn này giống với Android 12.
Android 12 trở xuống
Định dạng ABI là XML và bản trình bày ABI tham chiếu là
common/android/abi_gki_aarch64.xml
Các nhân này sử dụng build.sh thay vì Kleaf. Đối với tính năng giám sát ABI, bạn nên sử dụng build_abi.sh. Tập lệnh này chấp nhận các biến môi trường tương tự để tuỳ chỉnh bản dựng như build.sh. Ví dụ:
BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.shThao tác này sẽ tạo nhân và trích xuất bản trình bày ABI vào thư mục con OUT_DIR
(mặc định là out_abi) và tương đương với mục tiêu
//common:kernel_aarch64_abi_dist của Kleaf (xem
bài viết Tạo nhân và cấu phần phần mềm ABI).
Bản trình bày ABI tham chiếu được lưu trữ trong android/abi_gki_aarch64.xml như được xác định bởi biến ABI_DEFINITION trong common/build.config.gki.aarch64.
Nếu bạn cần cập nhật bản trình bày ABI của nhân, cách thuận tiện nhất là sử dụng các tuỳ chọn --update và --print-report:
BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh --update --print-reportTuỳ chọn --print-report sẽ in các điểm khác biệt về ABI giữa tệp hiện có và ABI mới được tạo.
Tuỳ chọn --update sẽ ghi đè bản trình bày ABI tham chiếu. Tuỳ chọn này cũng cập nhật
danh sách
ký hiệu
khi bạn sử dụng BUILD_CONFIG cho thiết bị đã định cấu hình KMI_SYMBOL_LIST.