Trang này mô tả cách xây dựng cách chạy và biểu diễn ABI cho nhân hệ điều hành Android Giám sát ABI. API này có thể áp dụng cho Android 14 và cao hơn. Đối với các phiên bản thấp hơn, hãy tham khảo Phiên bản kernel cũ hơn.
Ngoài ra, hãy xem tài liệu tham khảo cho Kleaf: Hỗ trợ giám sát ABI (GKI) và Hỗ trợ giám sát ABI (Thiết bị).
Xây dựng nhân và bản trình bày ABI của hạt nhân đó
Sau khi tải các nguồn GKI xuống chạy lệnh sau để tạo cấu phần phần mềm nhân hệ điều hành GKI và ABI:
tools/bazel run //common:kernel_aarch64_abi_dist
Lệnh này tạo bản trình bày ABI hiện tại rồi sao chép bản trình bày đó vào
out_abi/kernel_aarch64/dist/abi.stg
cùng với nhân hệ điều hành và các mô-đun đã tạo.
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 và cấu phần phần mềm bản dựng, bạn
có thể sử dụng tuỳ chọn --dist_dir
:
tools/bazel run //common:kernel_aarch64_abi_dist -- --dist_dir=out/dist
Phâ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ên,
phân tích và báo cáo mọi điểm khác biệt về ABI phát hiện được giữa bản dựng và tệp tham chiếu
đại diện tại common/android/abi_gki_aarch64.stg
(được xác định trong
BUILD.bazel
).
Những điểm khác biệt này sẽ được in ở cuối bản dựng, như minh hoạ 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 in được lấy từ cấu phần phần mềm bản dựng tại
out_abi/kernel_aarch64/dist/abi_stgdiff/abi.report.short
cùng với các báo cáo trong
các định dạng khác.
Quy trình tự động hoá phải sử dụng mã thoát của lệnh bản dựng. Mã này sẽ khác 0 nếu tìm thấy điểm khác biệt.
Lưu ý rằng
giai đoạn phát triển
các nhánh, bao gồm cả android-mainline
, không có bản trình bày ABI tham chiếu.
Nếu không có hàm này, //common:kernel_aarch64_abi_dist
sẽ không phát hiện thấy bất kỳ sự khác biệt nào.
Cập nhật bản trình bày ABI tham chiếu
Bất kỳ thay đổi nào ảnh hưởng đến ABI của nhân hệ điều hành, chẳng hạn như
cập nhật danh sách biểu tượng,
cần được phản ánh trong bản trình bày ABI tham chiếu
(common/android/abi_gki_aarch64.stg
, được xác định trong
BUILD.bazel).
Để thực hiện việc này, bạn cần phải chạy lệnh sau:
tools/bazel run //common:kernel_aarch64_abi_update
Lệnh này thực hiện mọi việc trong bước
Phân tích sự khác biệt về ABI và cập nhật thêm các
nội dung 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. Bao gồm những điểm khác biệt về ABI so với
báo cáo trong $DIST_DIR/abi.report.short
trong thông báo cam kết.
Hoạt động 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. Kết hợp
các cấu hình bản dựng (cấu hình xác định base_kernel
) sẽ biên dịch trực tiếp bằng
nhân GKI chỉ cần thêm hỗ trợ theo dõi biểu tượng thiết bị
danh sách.
Bạn nên cập nhật định nghĩa ABI bằng bản dựng GKI.
Ngoài ra, hãy xem tài liệu tham khảo cho Kleaf: Hỗ trợ giám sát ABI (Thiết bị).
Phiên bản kernel cũ hơn
Android 13
Hướng dẫn tạo hầu hết giống như
Android 14, ngoại trừ định dạng ABI là XML và
bản trình bày ABI tham chiếu là common/android/abi_gki_aarch64.xml
.
Android 13 trở xuống
Như trong Android 13, định dạng ABI là XML.
Các hạt nhân cũ sử dụng build.sh
thay vì Kleaf. Để theo dõi ABI, bạn nên dùng
build_abi.sh
chấp nhận các biến môi trường giống nhau để tuỳ chỉnh
tạo dưới dạng build.sh
. Ví dụ:
BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh
Thao tác này sẽ tạo nhân và trích xuất bản trình bày ABI vào OUT_DIR
(là out_abi
theo mặc định) và tương đương với
Mục tiêu //common:kernel_aarch64_abi_dist
của Kleaf (xem
Tạo cấu phần phần mềm nhân hệ điều hành và ABI).
Bản trình bày ABI tham chiếu được lưu trữ trong android/abi_gki_aarch64.xml
dưới dạng
đượ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-report
--print-report
in những điểm khác biệt về ABI giữa tệp khi tồn tại
và một ABI mới tạo.
Tuỳ chọn --update
sẽ ghi đè cách biểu diễn ABI tham chiếu. Điều này cũng có
thời gian
cập nhật danh sách biểu tượng
khi dùng BUILD_CONFIG
cho thiết bị đã định cấu hình KMI_SYMBOL_LIST
.