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 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 publikowany osobno, co oznacza, że poziom interfejsu API pakietu SDK i poziom interfejsu API dostawcy są niezsynchronizowane.
Ze względu na oddzielne harmonogramy wydawania w przypadku Androida w wersji 14-QPR3 i nowszych poziom interfejsu API dostawcy jest całkowicie niezależny od poziomu interfejsu API pakietu SDK. Aby zapewnić przejrzystość, 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 wersje zawierają te właściwości systemu związane z poziomem interfejsu API dostawcy (ro.vendor.api_level
):
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 początkowo. | 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, z którym musi być zgodne całe urządzenie. | Opisany 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 od dostawcy, który ma ten sam lub niższy poziom API. | Ta właściwość jest ustawiana przez partycję systemową. |
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 procesor 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 wartość 202404
, która jest przybliżoną datą Androida 14-QPR3, gdy 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 systemowe związane z poziomem interfejsu API dostawcy (ro.vendor.api_level
):
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 przez dostawcę. | 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 początkowo. | 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 | Poziom interfejsu API dostawcy, z którym musi być zgodne całe urządzenie. | Opisany po tej tabeli. |
ro.vndk.version |
Liczba całkowita | Wersja VNDK, na której została skompilowana partycja dostawcy. | Ta właściwość jest ustawiana przez partycję systemową. |
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. | |
ro.vendor.build.version.release |
Liczba całkowita | Wersja platformy drzewa źródłowego, w którym została utworzona partycja dostawcy. | |
ro.vendor.build.version.release_or_codename |
Liczba całkowita | Nazwa kodowa drzewa źródłowego, w którym została utworzona partycja dostawcy. |
Właściwość ro.vendor.api_level
jest automatycznie ustawiana na wartość minimalną z parametrów ro.board.api_level
(lub ro.board.first_api_level
, jeśli ro.board.api_level
nie jest zdefiniowany) i ro.product.first_api_level
.