Cấp độ API của nhà cung cấp đề cập đến phiên bản giao diện được phân vùng nhà cung cấp hỗ trợ. Giao diện này là hai chiều; giao diện này 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), cũng như 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), là một tập hợp các yêu cầu về chức năng và phi chức năng mà phần mềm trong phân vùng 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 các thuộc tính hệ thống được dù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.
Cố định 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 cụ thể của VSR. 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 bởi cấp độ API của nhà cung cấp được 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 sử dụng 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ể đóng băng 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, 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 hoàn toàn tách biệt với cấp độ API của SDK. Để đảm bảo việc tách biệt này rõ ràng, định dạng của cấp độ API của nhà cung cấp là ngày được định dạng là YYYYMM (năm và tháng), trong khi cấp độ SDK là số nguyên.
Android 14-QPR3 trở lên chứa các thuộc tính hệ thống sau liên quan đến cấp độ API của nhà cung cấp:
| 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 chipset hỗ trợ. Thuộc tính này được đặt cho tất cả chipset. | Hệ thống xây dựng sẽ tự động đặt thuộc tính này. |
ro.board.first_api_level |
YYYYMM | Cấp độ API của nhà cung cấp mà phần mềm của chipset được phát hành lần đầu. Thuộc tính này chỉ là một hàm của chipset và được nhà cung cấp SoC đặt nếu chipset SoC đủ điều kiện để đóng băng nhà cung cấp. Sau khi thiết lập ban đầu, thuộc tính này sẽ được coi là thuộc tính cuối cùng và không được sửa đổi. Mặc dù chúng tôi không khuyến khích thực hiện, nhưng bạn có thể được phép cập nhật trong một số ít trường hợp đặc biệt với điều kiện đóng băng nhà cung cấp mới. | Nhà cung cấp SoC đặt chế độ cài đặt này bằng cách sử dụng BOARD_SHIPPING_API_LEVEL. |
ro.product.first_api_level |
Số nguyên | Cấp độ API của SDK mà thiết bị được ra mắt ban đầu. | Thuộc tính này do 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 tương ứng với ro.product.first_api_level. Chúng tôi đặt ro.vendor.api_level thành giá trị của ro.board.api_level khi ro.board.api_level nhỏ hơn cấp độ API của nhà cung cấp ro.product.first_api_level chỉ khi chipset SoC đủ điều kiện để đóng băng nhà cung cấp. |
Đượ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 thiện. |
Nếu bạn không đặt thuộc tính này, thì 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 tương thích ngược, vì vậy, mọi hình ảnh nhà cung cấp nhỏ hơn hoặc bằng cấp độ API này đều có thể được cài đặt bằng hình ảnh hệ thống này. | Thuộc tính này được đặt trong phân vùng hệ thống. |
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 để đóng băng nhà cung cấp:
ro.vendor.api_level = min( ro.board.api_level, AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))Nếu chipset không bị đóng băng nhà cung cấp:
ro.vendor.api_level = AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
Phương thức AVendorSupport_getVendorApiLevelOf() xác định cấp độ API của nhà cung cấp tương ứng từ cấp độ API của SDK. Ví dụ:
AVendorSupport_getVendorApiLevelOf(35), trong đó 35 là cấp độ API của SDK trong bản phát hành Android chính vào năm 2024 sẽ trả về 202404, đây là ngày gần đú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 của SDK, dành cho giao diện hệ điều hành ứng dụng và được cập nhật mỗi năm một lần 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 liên quan đến cấp độ API của nhà cung cấp:
| 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 chipset được phát hành lần đầu. Đây chỉ là một hàm của chipset và không thể sửa đổi bởi nhà cung cấp SoC hoặc OEM. Thuộc tính này chỉ được đặt cho các chipset đủ điều kiện để đóng băng nhà cung cấp | 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 chipset hỗ trợ. Thuộc tính này chỉ được đặt cho các chipset đủ điều kiện để đóng băng nhà cung cấp. | Ban đầu, giá trị của thuộc tính này được hệ thống xây dựng đặt thành giá trị giống như ro.board.first_api_level, nhưng có thể được cập nhật nếu phân vùng nhà cung cấp được nâng cấp. |
ro.product.first_api_level |
Số nguyên | Cấp độ API của SDK mà thiết bị được ra mắt ban đầu. | Thuộc tính này do 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 | Giống như phần mô tả cấp độ API của nhà cung cấp trong bảng trước. | |
ro.vndk.version |
Số nguyên | Phiên bản VNDK mà phân vùng nhà cung cấp được xây dựng dựa trên. | Thuộc tính này được đặt trong phân vùng nhà cung cấp. |
ro.vendor.build.version.sdk |
Số nguyên | Cấp độ API của SDK trong cây nguồn nơi phân vùng nhà cung cấp được xây dựng. |