Cấp độ API của nhà cung cấp đề cập đến phiên bản giao diện mà phân vùng của nhà cung cấp hỗ trợ. Giao diện này là hai chiều; mô tả API mà phân vùng nhà cung cấp cung cấp cho phân vùng hệ thống (lớp trừu tượng phần cứng hoặc giao diện HAL) và cũng là API mà phân vùng nhà cung cấp yêu cầu từ phân vùng hệ thống (bộ công cụ dành cho nhà phát triển gốc cấp thấp hoặc giao diện LLNDK).
Cấp độ API của nhà cung cấp cũng được dùng để xác định Yêu cầu về phần mềm của nhà cung cấp (VSR). Đây là một tập hợp các yêu cầu chức năng và phi chức năng mà phần mềm trong phân vùng của nhà cung cấp phải đáp ứng.
Phần còn lại của trang này giải thích cách sử dụng các thuộc tính hệ thống, tuỳ thuộc vào phiên bản Android của bạn, để xác định cấp độ API của nhà cung cấp.
Đóng băng nhà cung cấp
Android cho phép nhà cung cấp đóng băng phân vùng nhà cung cấp ở một phiên bản VSR cụ thể. Tập hợp các tính năng mà Android mong đợi từ phân vùng nhà cung cấp được xác định theo cấp độ API của nhà cung cấp liên kết với phân vùng nhà cung cấp. Trong thời gian chạy, hành vi của phần mềm chạy trong phân vùng hệ thống sẽ điều chỉnh để phù hợp với cấp độ API của nhà cung cấp trong phân vùng nhà cung cấp. Ví dụ: phần mềm trong phân vùng hệ thống có thể không thực hiện được các tính năng mới nếu các tính năng đó không được cấp độ API của phân vùng nhà cung cấp hỗ trợ.
Bạn chỉ có thể sử dụng tính năng khoá nhà cung cấp nếu đang tạo thiết bị tương thích với Android.
Xác định cấp độ API của nhà cung cấp (Android 14-QPR3 trở lên)
Đối với Android 14-QPR3 trở lên, cấp độ API của nhà cung cấp được phát hành riêng biệt, nghĩa là cấp độ API của SDK và cấp độ API của nhà cung cấp không đồng bộ.
Do lịch phát hành riêng biệt, đối với Android 14-QPR3 trở lên, cấp độ API của nhà cung cấp được tách hoàn toàn khỏi cấp độ API SDK. Để đảm bảo việc phân tách này rõ ràng, định dạng của cấp độ API của nhà cung cấp là một ngày được định dạng là YYYYMM (năm và tháng) trong khi cấp độ SDK là một số nguyên.
Android 14-QPR3 trở lên chứa các thuộc tính hệ thống sau đây liên quan đến cấp độ API của nhà cung cấp (ro.vendor.api_level
):
Thuộc tính hệ thống | Định dạng | Mô tả | Chế độ cài đặt ban đầu |
---|---|---|---|
ro.board.api_level |
YYYYMM | Cấp độ API của nhà cung cấp mà phần mềm của một chipset hỗ trợ. Thuộc tính này được đặt cho tất cả các chipset. | Hệ thống xây dựng sẽ tự động đặt giá trị này. |
ro.board.first_api_level |
YYYYMM | Cấp độ API của nhà cung cấp mà phần mềm của một chipset được phát hành lần đầu tiên. Thuộc tính này chỉ là một hàm của chipset và do nhà cung cấp SoC đặt nếu chipset SoC đủ điều kiện để nhà cung cấp đóng băng. Sau khi thiết lập ban đầu, bạn không được sửa đổi giá trị này. | Nhà cung cấp SoC thiết lập chế độ cài đặt này bằng BOARD_SHIPPING_API_LEVEL . |
ro.product.first_api_level |
Số nguyên | Cấp độ API SDK mà thiết bị khởi chạy ban đầu. | Thuộc tính này do nhà sản xuất thiết bị gốc (OEM) đặt và sau đó không bao giờ được cập nhật, ngay cả sau khi nâng cấp hệ điều hành. |
ro.vendor.api_level |
YYYYMM | Cấp độ API của nhà cung cấp mà toàn bộ thiết bị phải tuân thủ. | Được mô tả sau bảng này. |
ro.board.api_frozen |
boolean | Thuộc tính này được đặt thành true nếu cấp độ API của nhà cung cấp mà ro.board.api_level đại diện đã được hoàn tất. |
Nếu bạn không đặt thuộc tính này, thuộc tính này sẽ mặc định là false . |
ro.llndk.api_level |
YYYYMM | Cấp độ API của nhà cung cấp ở định dạng YYYYMM mà LLNDK hiện tại trong phân vùng hệ thống cung cấp. LLNDK có khả năng tương thích ngược, vì vậy, mọi hình ảnh của nhà cung cấp nhỏ hơn hoặc bằng cấp độ API này đều có thể được cài đặt ROM bằng hình ảnh hệ thống này. | Thuộc tính này do phân vùng hệ thống đặt. |
Thuộc tính ro.vendor.api_level
được lấy theo một trong hai cách sau:
Nếu chipset đủ điều kiện để nhà cung cấp đóng băng:
ro.vendor.api_level = min( ro.board.api_level, AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
Nếu chipset không bị nhà cung cấp đóng băng:
ro.vendor.api_level = AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
Phương thức AVendorSupport_getVendorApiLevelOf()
xác định cấp độ API nhà cung cấp tương ứng từ cấp độ API SDK. Ví dụ: AVendorSupport_getVendorApiLevelOf(35)
, trong đó 35
là cấp độ API SDK của bản phát hành Android chính vào năm 2024 sẽ trả về 202404
, đây là ngày ước chừng cho Android 14-QPR3 khi cấp độ API của nhà cung cấp hiện tại được đặt.
Xác định cấp độ API của nhà cung cấp (Android 13)
Cấp độ API của nhà cung cấp tuân theo cấp độ API SDK dành cho giao diện ứng dụng-hệ điều hành và được cập nhật một lần mỗi năm khi nền tảng Android mới được phát hành cho AOSP.
Android 13 chứa các thuộc tính hệ thống sau đây liên quan đến cấp độ API của nhà cung cấp (ro.vendor.api_level
):
Thuộc tính hệ thống | Định dạng | Mô tả | Chế độ cài đặt ban đầu |
---|---|---|---|
ro.board.first_api_level |
Số nguyên | Cấp độ API của nhà cung cấp mà phần mềm của một chipset được phát hành lần đầu tiên. Đây là một chức năng chỉ dành cho chipset và nhà cung cấp SoC hoặc OEM không thể sửa đổi chức năng này. Thuộc tính này chỉ được đặt cho các chipset đủ điều kiện để nhà cung cấp đóng băng | Giá trị được thiết lập bằng cách đặt BOARD_SHIPPING_API_LEVEL trong tệp device.mk . |
ro.board.api_level |
Số nguyên | Cấp độ API của nhà cung cấp mà phần mềm của một chipset hỗ trợ. Thuộc tính này chỉ được đặt cho các chipset đủ điều kiện để nhà cung cấp đóng băng. | Ban đầu, hệ thống xây dựng đặt giá trị của thuộc tính này thành giá trị giống với ro.board.first_api_level , nhưng có thể cập nhật nếu phân vùng của nhà cung cấp được nâng cấp. |
ro.product.first_api_level |
Số nguyên | Cấp độ API SDK mà thiết bị khởi chạy ban đầu. | Thuộc tính này do nhà sản xuất thiết bị gốc (OEM) đặt và sau đó không bao giờ được cập nhật, ngay cả sau khi nâng cấp hệ điều hành. |
ro.vendor.api_level |
Số nguyên | Cấp độ API của nhà cung cấp mà toàn bộ thiết bị phải tuân thủ. | Được mô tả sau bảng này. |
ro.vndk.version |
Số nguyên | Phiên bản VNDK mà phân vùng nhà cung cấp được tạo dựa trên đó. | Thuộc tính này do phân vùng hệ thống đặt. |
ro.vendor.build.version.sdk |
Số nguyên | Cấp độ API SDK của cây nguồn nơi phân vùng nhà cung cấp được tạo. | |
ro.vendor.build.version.release |
Số nguyên | Phiên bản nền tảng của cây nguồn nơi phân vùng nhà cung cấp được tạo. | |
ro.vendor.build.version.release_or_codename |
Số nguyên | Tên mã của cây nguồn nơi phân vùng nhà cung cấp được tạo. |
Thuộc tính ro.vendor.api_level
được tự động đặt thành giá trị tối thiểu là ro.board.api_level
(hoặc ro.board.first_api_level
nếu không xác định ro.board.api_level
) và ro.product.first_api_level
.