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

Cấp độ API của nhà cung cấp đề cập đến phiên bản giao diện do phân vùng của nhà cung cấp hỗ trợ. Giao diện này là giao diện 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). Đây 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 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 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.

Đó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 cụ thể của VSR. Nhóm 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 nhà cung cấp được liên kết với phân vùng nhà cung cấp. Khi 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 của 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 chú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 đóng băng nhà cung cấp nếu đ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 được phát hành riêng, tức 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 nhà cung cấp hoàn toàn tách biệt với cấp độ API SDK. Để đảm bảo việc tách rời này rõ ràng, định dạng của cấp độ API nhà cung cấp là ngày được định dạng dưới 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ó các thuộc tính hệ thống sau đây 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 một chipset hỗ trợ. Thuộc tính này được đặt cho tất cả các chipset. Hệ thống bản 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 chipset được phát hành lần đầu. Thuộc tính này chỉ là một chức năng 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 chế độ này. Nhà cung cấp 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 ra mắt ban đầu. OEM đặt thuộc tính này và sau đó không bao giờ 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 tất. Nếu bạn không đặt thuộc tính này, giá trị mặc định sẽ 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 nhà cung cấp nhỏ hơn hoặc bằng cấp độ API này đều có thể được flash 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 để 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 thuộc diện hạn chế của 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 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 dự kiến cho Android 14-QPR3 khi cấp độ API 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 ứng dụng – hệ điều hành 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 đây 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à chức năng của chipset và không thể được sửa đổi bởi nhà cung cấp SoC hoặc OEM. Thuộc tính này chỉ được đặt cho những chipset đủ điều kiện nhận thông báo đóng băng của 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 một chipset hỗ trợ. Thuộc tính này chỉ được đặt cho những 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 SDK mà thiết bị được ra mắt ban đầu. OEM đặt thuộc tính này và sau đó không bao giờ cập nhật, ngay cả sau khi nâng cấp hệ điều hành.
ro.vendor.api_level Số nguyên Tương tự như nội dung 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 tạo dựa trên. Thuộc tính này được đặt trong phân vùng của nhà cung cấp.
ro.vendor.build.version.sdk Số nguyên Cấp API SDK của cây nguồn nơi phân vùng của nhà cung cấp được tạo.