Cách chạy Giám sát ABI

Phần này mô tả cách xây dựng biểu diễn ABI nhân Android và chạy giám sát ABI. Nó có thể áp dụng cho Android 14 trở lên. Đối với các phiên bản cũ hơn, vui lòng tham khảo Phiên bản kernel cũ hơn .

Đồng thời xem tài liệu tham khảo về Kleaf: Hỗ trợ giám sát ABI (GKI)Hỗ trợ giám sát ABI (Thiết bị) .

Xây dựng hạt nhân và biểu diễn ABI của nó

Sau khi tải xuống các nguồn GKI, hãy chạy lệnh sau để xây dựng hạt nhân GKI và các tạo phẩm ABI:

tools/bazel run //common:kernel_aarch64_abi_dist

Lệnh này xây dựng cách trình bày ABI hiện tại và sao chép nó vào out_abi/kernel_aarch64/dist/abi.stg cùng với hạt nhân và mô-đun đã xây dựng.

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 cho ABI và xây dựng các tạo phẩm, bạn có thể sử dụng tùy 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 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 khác biệt ABI được tìm thấy giữa bản trình bày bản dựng và tham chiếu nằm ở common/android/abi_gki_aarch64.stg (được xác định trong BUILD.bazel ). Những khác biệt này sẽ đượ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 xuất phát từ cấu phần phần mềm xây dựng có tại out_abi/kernel_aarch64/dist/abi_stgdiff/abi.report.short cùng với các báo cáo ở các định dạng khác.

Tự động hóa nên sử dụng mã thoát của lệnh xây dựng, mã này sẽ khác 0 nếu tìm thấy sự khác biệt.

Xin lưu ý rằng các nhánh trong giai đoạn phát triển , bao gồm android-mainline , không có biểu diễn ABI tham chiếu. Không có nó, //common:kernel_aarch64_abi_dist sẽ không phát hiện bất kỳ sự khác biệt nào.

Cập nhật biểu diễn ABI tham chiếu

Bất kỳ thay đổi nào ảnh hưởng đến ABI kernel, chẳng hạn như cập nhật danh sách ký hiệu , cần phải được phản ánh trong biểu diễn ABI tham chiếu ( common/android/abi_gki_aarch64.stg , được xác định trong BUILD.bazel ). Để làm như vậy bạn cần chạy lệnh sau:

​​tools/bazel run //common:kernel_aarch64_abi_update

Lệnh này thực hiện mọi thứ trong bước Phân tích sự khác biệt của ABI và cập nhật thêm cách trình bày tham chiếu trong các nguồn. Sau đó, ABI đã cập nhật có thể được tải lên trong cùng một cam kết với thay đổi. Vui lòng bao gồm những 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.

Mục tiêu thiết bị và giám sát ABI

Giám sát ABI chỉ cần được cấu hình cho các mục tiêu xây dựng hạt nhân cốt lõi. Các cấu hình bản dựng hỗn hợp (những cấu hình xác định base_kernel ) biên dịch trực tiếp với nhân GKI chỉ cần thêm hỗ trợ để theo dõi danh sách ký hiệu thiết bị . Định nghĩa ABI phải được cập nhật bằng cách sử dụng bản dựng GKI.

Đồng thời xem tài liệu tham khảo về Kleaf: Hỗ trợ giám sát ABI (Thiết bị) .

Phiên bản hạt nhân cũ hơn

Android 13

Hướng dẫn xây dựng hầu hết giống với Android 14 ngoại trừ định dạng ABI là XML và cách biểu diễn ABI tham chiếu là common/android/abi_gki_aarch64.xml .

Android 12 trở xuống

Giống như trong Android 13, định dạng ABI là XML.

Các kernel cũ hơn sử dụng build.sh thay vì Kleaf. Để giám sát ABI, bạn nên sử dụng build_abi.sh , chấp nhận các biến môi trường tương tự để tùy chỉnh bản dựng 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ẽ xây dựng hạt nhân và trích xuất biểu diễn ABI vào thư mục con OUT_DIR (theo 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 Xây dựng hạt nhân và tạo phẩm ABI ).

Biểu diễn 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 kernel, cách thuận tiện nhất là sử dụng các tùy chọn --update--print-report :

BUILD_CONFIG=common/build.config.gki.aarch64 build/build_abi.sh --update --print-report

--print-report in sự khác biệt ABI giữa tệp khi nó tồn tại và ABI mới được tạo.

Tùy chọn --update ghi đè phần trình bày ABI tham chiếu. Nó cũng cập nhật danh sách ký hiệu khi sử dụng BUILD_CONFIG cho thiết bị có cấu hình KMI_SYMBOL_LIST .