Mô-đun Tiện ích SDK quyết định cấp độ SDK tiện ích của thiết bị và cung cấp API để ứng dụng truy vấn cấp độ SDK tiện ích. Mô-đun này có thể cập nhật, nghĩa là mô-đun có thể nhận các bản cập nhật cho chức năng bên ngoài chu kỳ phát hành thông thường của Android.
Tiện ích SDK chịu trách nhiệm về:
- Quyết định cấp độ SDK tiện ích của thiết bị.
- Cung cấp API cho ứng dụng để truy vấn cấp độ SDK tiện ích.
- (Kể từ Android 12) Xác định giá trị cho các biến môi trường
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
vàSYSTEMSERVERCLASSPATH
.
Định dạng mô-đun
Mô-đun Tiện ích SDK (com.android.sdkext
) ở định dạng APEX và được cung cấp cho các thiết bị chạy Android 11 trở lên.
Định dạng gói
Mô-đun Tiện ích SDK (com.google.android.sdkext
) ở định dạng APEX và chứa các thành phần sau:
(Kể từ Android 12)
bin/derive_classpath
: Tệp nhị phân gốc chạy sớm trong quá trình khởi động thiết bị. Công cụ này đọc từng tệp cấu hình đường dẫn lớp từ hệ thống và các mô-đun khác, hợp nhất các tệp đó và xác định định nghĩa của các biến môi trườngCLASSPATH
.bin/derive_sdk
: Tệp nhị phân gốc chạy sớm trong quá trình khởi động thiết bị và đọc siêu dữ liệu của các mô-đun khác để đặt các thuộc tính hệ thống liên quan đến SDK tiện ích (ví dụ:build.version.extensions.r
).javalib/framework-sdkextension.jar
: Tệp này nằm trên đường dẫn lớp khởi động hiển thị API cho các ứng dụng để truy vấn cấp SDK tiện ích.
Trích xuất cấp độ SDK của tiện ích
Chương trình derive_sdk
đọc siêu dữ liệu được lưu trữ dưới dạng tệp protobuf nhị phân trong đường dẫn phụ etc/sdkinfo.binarypb
bên trong mỗi mô-đun APEX. Để biết thông tin chi tiết về cấu trúc protobuf, vui lòng tham khảo tệp protobuf
.
Đọc cấp độ SDK của tiện ích
Mô-đun Tiện ích SDK hiển thị một lớp java SdkExtensions
trong gói android.os.ext
. Sử dụng phương thức getExtensionVersion(int)
để đọc phiên bản của tiện ích SDK (ví dụ: getExtensionVersion(Build.VERSION_CODES.R)
).
Suy ra đường dẫn lớp
Dịch vụ derive_classpath
đọc và hợp nhất các tệp cấu hình riêng lẻ trong /system/etc/classpaths/
và /apex/*/etc/classpaths/
. Mỗi cấu hình lưu trữ thông báo protobuf từ classpaths.proto
ở định dạng tệp nhị phân proto. Thuật toán hợp nhất chính xác xác định thứ tự của các mục nhập đường dẫn lớp được mô tả trong derive_classpath.cpp
và có thể thay đổi theo thời gian.