Poziom interfejsu API dostawcy odnosi się do wersji interfejsu obsługiwanej przez partycję dostawcy. Interfejs jest dwukierunkowy. Opisuje interfejs API, który dostawca udostępnia partycji systemowej (poziom abstrakcji sprzętowej, czyli interfejs HAL), a także interfejs API, którego potrzebuje partycja dostawcy od partycji systemowej (interfejs LLNDK).
Poziom interfejsu API dostawcy służy też do określania wymagań dotyczących oprogramowania dostawcy (VSR), czyli zbioru wymagań funkcjonalnych i niefunkcjonalnych, które musi spełniać oprogramowanie w partycji dostawcy.
Z dalszej części tej strony dowiesz się, jak właściwości systemu są używane (w zależności od wersji Androida) do określania poziomu interfejsu API dostawcy.
Zablokowanie dostawcy
Android umożliwia dostawcy zamrożenie partycji dostawcy w konkretnej wersji interfejsu VSR. Zestaw funkcji, których Android oczekuje od partycji dostawcy, jest określany przez poziom interfejsu API dostawcy powiązany z tą partycją. Podczas działania oprogramowania na partycji systemowej jego działanie dostosowuje się do poziomu interfejsu API dostawcy na partycji dostawcy. Na przykład oprogramowanie na partycji systemowej może nie korzystać z nowych funkcji, jeśli nie są one obsługiwane przez poziom interfejsu API na partycji dostawcy.
Blokada dostawcy jest dostępna tylko wtedy, gdy tworzysz urządzenie zgodne z Androidem.
Określanie poziomu interfejsu API dostawcy (Android 14-QPR3 i nowsze)
W przypadku Androida 14-QPR3 i nowszych poziom interfejsu API dostawcy jest wydawany osobno, co oznacza, że poziom interfejsu API pakietu SDK i poziom interfejsu API dostawcy są niezsynchronizowane.
Ze względu na oddzielne harmonogramy wersji w przypadku Androida 14-QPR3 i nowszych poziom interfejsu API dostawcy jest całkowicie niezależny od poziomu interfejsu API pakietu SDK. Aby zapewnić przejrzystość tego rozdzielenia, format poziomu interfejsu API dostawcy to data w formacie RRRRMM (rok i miesiąc), a poziom pakietu SDK to liczba całkowita.
Android 14-QPR3 i nowsze zawiera te właściwości systemu związane z poziomem interfejsu API dostawcy:
Właściwość systemowa | Format | Opis | Ustawienia początkowe |
---|---|---|---|
ro.board.api_level |
RRRRMM | Poziom interfejsu API dostawcy, który obsługuje oprogramowanie chipsetu. Ta usługa jest ustawiona dla wszystkich chipsetów. | Jest on ustawiany automatycznie przez system kompilacji. |
ro.board.first_api_level |
RRRRMM | Poziom interfejsu API dostawcy, z którym oprogramowanie chipsetu zostało po raz pierwszy wydane. Ta właściwość jest funkcją tylko układu scalonego i jest ustawiana przez dostawców układów SoC, jeśli spełniają oni wymagania dotyczące zamrożenia dostawcy. Po ustawieniu nie można go zmienić. | Dostawcy układów SoC ustawiają to ustawienie za pomocą funkcji BOARD_SHIPPING_API_LEVEL . |
ro.product.first_api_level |
Liczba całkowita | Poziom interfejsu API pakietu SDK, z którym urządzenie jest uruchamiane po raz pierwszy. | Ta właściwość jest ustawiana przez producenta OEM i nigdy nie jest aktualizowana, nawet po uaktualnieniu systemu operacyjnego. |
ro.vendor.api_level |
RRRRMM | Poziom interfejsu API dostawcy odpowiadający wartości ro.product.first_api_level . Ustawiamy ro.vendor.api_level na wartość ro.board.api_level , gdy ro.board.api_level jest mniejsza niż wartość poziomu interfejsu API dostawcy ro.product.first_api_level , tylko jeśli chipset SoC kwalifikuje się do zamrożenia dostawcy. |
Opis znajduje się po tej tabeli. |
ro.board.api_frozen |
wartość logiczna | Ta właściwość jest ustawiona na true , jeśli poziom interfejsu API dostawcy, który reprezentuje ro.board.api_level , jest sfinalizowany. |
Jeśli ta właściwość nie jest skonfigurowana, domyślna wartość to false . |
ro.llndk.api_level |
RRRRMM | Poziom interfejsu API dostawcy w formacie RRRRMM, który zapewnia bieżący LLNDK na partycji systemowej. LLNDK jest zgodny wstecz, więc można go zainstalować na dowolnym obrazie dostawcy na poziomie API niższym niż ten lub równym. | Ta właściwość jest ustawiana w partycji systemowej. |
Właściwość ro.vendor.api_level
jest tworzona na jeden z tych 2 sposobów:
Jeśli chipset kwalifikuje się do zamrożenia przez dostawcę:
ro.vendor.api_level = min( ro.board.api_level, AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
Jeśli chipset nie jest objęty blokadą dostawcy:
ro.vendor.api_level = AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
Metoda AVendorSupport_getVendorApiLevelOf()
określa odpowiedni poziom interfejsu API dostawcy na podstawie poziomu interfejsu API pakietu SDK. Na przykład AVendorSupport_getVendorApiLevelOf(35)
, gdzie 35
to poziom interfejsu API pakietu SDK w przypadku głównego wydania Androida w 2024 r., zwraca 202404
, czyli przybliżoną datę Androida 14-QPR3, w której ustawiono bieżący poziom interfejsu API dostawcy.
Określanie poziomu interfejsu API dostawcy (Android 13)
Poziom interfejsu API dostawcy jest zgodny z poziomem interfejsu API pakietu SDK, który jest interfejsem aplikacji i systemu operacyjnego. Jest aktualizowany raz w roku, gdy nowa platforma Androida zostanie wydana do AOSP.
Android 13 zawiera te właściwości systemu związane z poziomem interfejsu API dostawcy:
Właściwość systemowa | Format | Opis | Ustawienia początkowe |
---|---|---|---|
ro.board.first_api_level |
Liczba całkowita | Poziom interfejsu API dostawcy, z którym oprogramowanie chipsetu zostało po raz pierwszy wydane. Jest to funkcja tylko dla chipsetu i nie może być modyfikowana przez dostawców SoC ani OEM-ów. Ta właściwość jest ustawiana tylko w przypadku chipsetów, które kwalifikują się do zamrożenia dostawcy | Wartość jest ustalana przez ustawienie BOARD_SHIPPING_API_LEVEL w pliku device.mk . |
ro.board.api_level |
Liczba całkowita | Poziom interfejsu API dostawcy, który obsługuje oprogramowanie chipsetu. Ta właściwość jest ustawiana tylko w przypadku chipsetów, które kwalifikują się do zamrożenia dostawcy. | Początkowo system kompilacji ustawia wartość tej właściwości na taką samą jak ro.board.first_api_level , ale można ją zaktualizować, jeśli partycja dostawcy zostanie ulepszona. |
ro.product.first_api_level |
Liczba całkowita | Poziom interfejsu API pakietu SDK, z którym urządzenie jest uruchamiane po raz pierwszy. | Ta właściwość jest ustawiana przez producenta OEM i nigdy nie jest aktualizowana, nawet po uaktualnieniu systemu operacyjnego. |
ro.vendor.api_level |
Liczba całkowita | Taki sam jak w przypadku dostawcy w poprzedniej tabeli. | |
ro.vndk.version |
Liczba całkowita | Wersja VNDK, na której została skompilowana partycja dostawcy. | Ta właściwość jest ustawiana w partycji dostawcy. |
ro.vendor.build.version.sdk |
Liczba całkowita | Poziom interfejsu API pakietu SDK w drzewie źródłowym, w którym została utworzona partycja dostawcy. |