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 các ứng dụng để truy vấn cấp SDK tiện ích. Mô-đun này là có thể cập nhật, nghĩa là ứng dụng có thể nhận thông tin cập nhật về chức năng ngoài bình thường Chu kỳ phát hành Android.
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 các ứng dụng để truy vấn cấp SDK tiện ích.
- (Kể từ Android 12) Xác định giá trị của phần tử
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
vàSYSTEMSERVERCLASSPATH
biến môi trường.
Định dạng mô-đun
Mô-đun Tiện ích SDK (com.android.sdkext
) đang ở
Định dạng APEX và dùng được 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
) đang ở
Định dạng APEX và
chứa các thành phần sau:
(Kể từ Android 12)
bin/derive_classpath
: A tệp nhị phân gốc chạy sớm khi khởi động thiết bị của chúng tôi. Nó đọ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 chúng và xác định định nghĩa củaCLASSPATH
biến môi trường.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 có liên quan đến SDK của 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.
Lấy 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 con etc/sdkinfo.binarypb
bên trong mỗi mô-đun APEX. Thông tin chi tiết về protobuf
cấu trúc, tham khảo
protobuf
.
Đọc cấp SDK của tiện ích
Mô-đun Tiện ích SDK hiển thị
SdkExtensions
java trong gói android.os.ext
. Sử dụng getExtensionVersion(int)
để đọc phiên bản của một 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 sẽ được 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 nhập đường dẫn lớp được mô tả trong
derive_classpath.cpp
và có thể thay đổi theo thời gian.