Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Phần mở rộng SDK

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.

Mô-đun Tiện ích mở rộng SDK quyết định cấp SDK tiện ích mở rộng 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ở rộng. Mô-đun này có thể cập nhật, có nghĩa là nó có thể nhận các bản cập nhật cho chức năng ngoài chu kỳ phát hành Android thông thường.

Phần mở rộng SDK chịu trách nhiệm về:

  • Quyết định cấp SDK mở rộng của thiết bị.
  • Cung cấp API cho các ứng dụng để truy vấn cấp SDK của tiện ích mở rộng.
  • (Bắt đầu từ Android 12) Xác định giá trị cho các biến môi trường BOOTCLASSPATH , DEX2OATBOOTCLASSPATHSYSTEMSERVERCLASSPATH .

Định dạng mô-đun

Mô-đun Tiện ích mở rộng SDK ( com.android.sdkext ) ở định dạng APEX và khả dụng cho các thiết bị chạy Android 11 trở lên.

Định dạng gói

Mô-đun Tiện ích mở rộng 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ị. Nó đọc các tệp cấu hình classpath 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ủa các biến môi trường CLASSPATH .

  • 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 thuộc tính hệ thống liên quan đến SDK mở rộng (ví dụ: build.version.extensions.r ).

  • javalib/framework-sdkextension.jar : Tệp này nằm trên bootclasspath để hiển thị các API cho các ứng dụng để truy vấn cấp SDK của tiện ích mở rộng.

Bắt nguồn cấp SDK của tiện ích mở rộng

Chương trình derive_sdk đọc siêu dữ liệu được lưu trữ dưới dạng tệp nhị phân protobuf trong đường dẫn con etc/sdkinfo.binarypb bên trong mỗi mô-đun APEX. Để biết chi tiết về cấu trúc protobuf, hãy tham khảo tệp protobuf .

Đọc cấp SDK của tiện ích mở rộng

Mô-đun Tiện ích mở rộng 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 mở rộng SDK (ví dụ: getExtensionVersion(Build.VERSION_CODES.R) ).

Bắt nguồn classpaths

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//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 nhập classpath được mô tả trong derive_classpath.cpp và có thể thay đổi theo thời gian.