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 cho ứng dụng để truy vấn cấp SDK tiện ích. Mô-đun này có thể cập nhật, tức là có thể nhận các bản cập nhật về chức năng bên ngoài chu kỳ phát hành Android thông thường.
Tiện ích SDK chịu trách nhiệm:
- 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.
- (Bắt đầu từ Android 12) Xác định các giá trị cho các biến môi trường
BOOTCLASSPATH,DEX2OATBOOTCLASSPATHvàSYSTEMSERVERCLASSPATH.
Định dạng mô-đun
Mô-đun Tiện ích SDK (com.android.sdkext) ở định dạng
APEX và có sẵn 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:
(Bắt đầu từ Android 12)
bin/derive_classpath: Một tệp nhị phân gốc chạy sớm trong quá trình khởi động thiết bị. Tệp này đọc các tệp cấu hình đường dẫn lớp riêng lẻ 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 biến môi trườngCLASSPATH.bin/derive_sdk: Một 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 ứng dụng để truy vấn cấp SDK tiện ích.
Lấy cấp SDK 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 con 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, hãy tham khảo tệp
protobuf.
Đọc cấp SDK tiện ích
Mô-đun Tiện ích SDK hiển thị một
SdkExtensions
lớp java 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)).
Lấy đườ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 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 đường dẫn lớp được mô tả trong
derive_classpath.cpp
và có thể thay đổi theo thời gian.