Cấp độ API nhà cung cấp

Cấp độ API Nhà cung cấp đề cập đến phiên bản giao diện mà phân vùng nhà cung cấp. Giao diện có 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 (phần cứng tầng trừu tượng hoặc giao diện HAL) và cả 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 nhà cung cấp cũng dùng để xác định các Yêu cầu về phần mềm của nhà cung cấp (VSR), một tập hợp các yêu cầu về chức năng và không 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 hệ thống các thuộc tính được sử dụng (tuỳ thuộc vào phiên bản Android) để xác định nhà cung cấp Cấp độ API.

Nhà cung cấp bị treo

Android cho phép nhà cung cấp cố định 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 theo 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 đang chạy trong phân vùng hệ thống sẽ điều chỉnh cho 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 thi các tính năng mới nếu chúng không được hỗ trợ bởi cấp độ API của phân vùng nhà cung cấp.

Trạng thái đóng băng của nhà cung cấp chỉ áp dụng nếu bạn đang tạo một 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 là được phát hành riêng biệt, nghĩa là cấp độ API SDK và nhà cung cấp Cấp độ API không đồng bộ.

Do có lịch phát hành riêng biệt, dành cho Android 14-QPR3 trở lên, cấp độ API của nhà cung cấp hoàn toàn đã tách khỏi cấp độ API SDK. Để đảm bảo việc phân tách này rõ ràng, định dạng cấp API của nhà cung cấp là một ngày có định dạng YYYYMM (năm và tháng) trong khi cấp độ SDK là một số nguyên.

Android 14-QPR3 trở lên có chứa hệ thống sau các thuộc tính 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 bộ vi mạch hỗ trợ. Thuộc tính này được đặt cho tất cả khối. Chế độ này do hệ thống xây dựng đặt tự động.
ro.board.first_api_level YYYYMM Cấp độ API của nhà cung cấp mà phần mềm của bộ vi mạch được phát hành lần đầu tiên. Thuộc tính này chỉ là một chức năng của bộ vi mạch và do các nhà cung cấp bộ xử lý SoC thiết lập nếu bộ vi mạch này đủ điều kiện để đóng băng thông qua nhà cung cấp. Bạn không được sửa đổi cài đặt này sau khi cài đặt ban đầu. Các nhà cung cấp dịch vụ SoC đặt 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ị được khởi chạy ban đầu. Thuộc tính này do OEM thiết lập và 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 Tài sản này được đặt thành true nếu cấp độ API của nhà cung cấp mà ro.board.api_level biểu thị đã hoàn tất. Nếu bạn không đặt thuộc tính này, thì thuộc tính mặc định sẽ là false.
ro.llndk.api_level YYYYMM Cấp độ API của nhà cung cấp theo đị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 thấp 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 bộ vi mạch đủ điều kiện để nhà cung cấp treo:

    ro.vendor.api_level = min(
      ro.board.api_level,
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
    
  • Nếu bộ vi mạch không bị nhà cung cấp treo:

    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 ở 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 trả về 202404, đây là ngày gần đúng của Android 14-QPR3 khi cấp độ API nhà cung cấp hiện tại là thiết lập.

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 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 có các hệ thống sau đây các thuộc tính 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 bộ vi mạch được phát hành lần đầu tiên. Đây là chức năng chỉ của bộ vi mạch và không thể sửa đổi bằng nhà cung cấp SoC hoặc OEM (Nhà sản xuất thiết bị gốc). Tài sản này chỉ được thiết lập cho các bộ vi mạch đủ điều kiện để hưởng lệnh đóng băng của nhà cung cấp Giá trị được thiết lập bằng cách thiết lập 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 bộ vi mạch hỗ trợ. Thuộc tính này chỉ được thiết lập cho các chipset đủ điều kiện cho trạng thái đóng băng của nhà cung cấp. Thuộc tính này được đặt cho tất cả khối. Ban đầu, hệ thống xây dựng đặt giá trị của thuộc tính này thành cùng một giá trị với ro.board.first_api_level. Tuy nhiên, giá trị này 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 SDK mà thiết bị được khởi chạy ban đầu. Thuộc tính này do OEM đặt và 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 xây dựng 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 mà bạn đã tạo phân vùng nhà cung cấp.
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 bạn không xác định ro.board.api_level) và ro.product.first_api_level.