Poziom interfejsu API dostawcy odnosi się do wersji interfejsu obsługiwanej przez partycję dostawcy. Interfejs jest dwukierunkowy. Opisuje interfejs API, który partycja dostawcy udostępnia partycji systemowej (interfejs warstwy abstrakcji sprzętu lub HAL), a także interfejs API, którego partycja dostawcy wymaga od partycji systemowej (interfejs LLNDK, czyli pakietu deweloperskiego niskiego poziomu).
Poziom interfejsu API dostawcy jest też używany do określania wymagań dotyczących oprogramowania dostawcy (VSR), czyli zbioru wymagań funkcjonalnych i niefunkcjonalnych, które musi spełniać oprogramowanie w partycji dostawcy.
W dalszej części tej strony wyjaśniamy, jak w zależności od wersji Androida używane są właściwości systemu do określania poziomu interfejsu API dostawcy.
Wstrzymanie dostawcy
Android umożliwia dostawcy zamrożenie partycji dostawcy w określonej wersji VSR. Zestaw funkcji, których Android oczekuje od partycji dostawcy, jest określany przez poziom interfejsu API dostawcy powiązany z tą partycją. W czasie działania oprogramowania zachowanie oprogramowania działającego w partycji systemowej dostosowuje się do poziomu interfejsu API dostawcy w partycji dostawcy. Na przykład oprogramowanie w partycji systemowej może nie korzystać z nowych funkcji, jeśli nie są one obsługiwane przez poziom interfejsu API 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 wersje)
W przypadku Androida 14-QPR3 i nowszych poziom interfejsu API dostawcy jest udostępniany oddzielnie, co oznacza, że poziom interfejsu API pakietu SDK i poziom interfejsu API dostawcy są niespójne.
Ze względu na oddzielne harmonogramy wydań w przypadku Androida 14-QPR3 i nowszych poziom interfejsu API dostawcy jest całkowicie odseparowany od poziomu interfejsu API pakietu SDK. Aby zapewnić jasność 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 wersje zawierają te właściwości systemowe związane z poziomem interfejsu API dostawcy:
Właściwość systemu | Format | Opis | Ustawienie początkowe |
---|---|---|---|
ro.board.api_level |
RRMM | Poziom interfejsu API dostawcy, który jest obsługiwany przez oprogramowanie chipsetu. Ta właściwość jest ustawiona dla wszystkich chipsetów. | Jest on ustawiany automatycznie przez system kompilacji. |
ro.board.first_api_level |
RRMM | Poziom interfejsu API dostawcy, z którym po raz pierwszy udostępniono oprogramowanie chipsetu. Ta właściwość zależy tylko od chipsetu i jest ustawiana przez dostawców SoC, jeśli chipset SoC kwalifikuje się do zamrożenia wersji. Po wstępnym ustawieniu nie można go modyfikować. | Dostawcy układów SoC ustawiają to ustawienie za pomocą BOARD_SHIPPING_API_LEVEL . |
ro.product.first_api_level |
Liczba całkowita | Poziom interfejsu API pakietu SDK, z którym urządzenie zostało wprowadzone na rynek. | Ta właściwość jest ustawiana przez producenta OEM i nigdy nie jest aktualizowana, nawet po uaktualnieniu systemu operacyjnego. |
ro.vendor.api_level |
RRMM | Poziom interfejsu API dostawcy odpowiadający wartości ro.product.first_api_level . Ustawiamy wartość ro.vendor.api_level na wartość ro.board.api_level , gdy ro.board.api_level jest mniejsza niż poziom interfejsu API dostawcy ro.product.first_api_level , tylko wtedy, gdy chipset SoC kwalifikuje się do zamrożenia przez dostawcę. |
Opisane po tej tabeli. |
ro.board.api_frozen |
wartość logiczna | Ta właściwość ma wartość true , jeśli poziom interfejsu API dostawcy, który reprezentuje ro.board.api_level , jest ostateczny. |
Jeśli ta właściwość nie jest skonfigurowana, domyślnie stosowana jest wartość false . |
ro.llndk.api_level |
RRMM | Poziom interfejsu API dostawcy w formacie RRRRMM, który zapewnia bieżący LLNDK w partycji systemowej. LLNDK jest wstecznie zgodny, więc każdy obraz dostawcy o poziomie API nie wyższym niż ten poziom można wgrać za pomocą tego obrazu systemu. | Ta właściwość jest ustawiona w partycji systemowej. |
Właściwość ro.vendor.api_level
jest obliczana 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 głównego wydania Androida w 2024 r., zwraca 202404
, czyli przybliżoną datę wydania Androida 14-QPR3, kiedy ustawiono bieżący poziom interfejsu API dostawcy.
Określanie poziomu interfejsu API dostawcy (Android 13)
Poziom API dostawcy jest zgodny z poziomem API pakietu SDK, który jest przeznaczony dla interfejsu aplikacji i systemu operacyjnego. Jest on aktualizowany raz w roku, gdy nowa platforma Androida jest udostępniana w AOSP.
Android 13 zawiera te właściwości systemu związane z poziomem interfejsu API dostawcy:
Właściwość systemu | Format | Opis | Ustawienie początkowe |
---|---|---|---|
ro.board.first_api_level |
Liczba całkowita | Poziom interfejsu API dostawcy, z którym po raz pierwszy udostępniono oprogramowanie chipsetu. Jest to funkcja samego chipsetu, której nie mogą modyfikować ani dostawcy SoC, ani producenci OEM. Ta właściwość jest ustawiana tylko w przypadku chipsetów, które kwalifikują się do zamrożenia przez dostawcę. | Wartość jest określana przez ustawienie BOARD_SHIPPING_API_LEVEL w pliku device.mk . |
ro.board.api_level |
Liczba całkowita | Poziom interfejsu API dostawcy, który jest obsługiwany przez oprogramowanie chipsetu. Ta właściwość jest ustawiana tylko w przypadku chipsetów, które kwalifikują się do zamrożenia przez dostawcę. | Początkowo wartość tej właściwości jest ustawiana przez system kompilacji na taką samą wartość jak ro.board.first_api_level , ale można ją zaktualizować, jeśli partycja dostawcy zostanie uaktualniona. |
ro.product.first_api_level |
Liczba całkowita | Poziom interfejsu API pakietu SDK, z którym urządzenie zostało wprowadzone na rynek. | 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 | Takie same jak w przypadku opisu poziomu API dostawcy w tabeli powyżej. | |
ro.vndk.version |
Liczba całkowita | Wersja VNDK, na podstawie której została utworzona partycja dostawcy. | Ta właściwość jest ustawiona w partycji dostawcy. |
ro.vendor.build.version.sdk |
Liczba całkowita | Poziom interfejsu SDK API drzewa źródłowego, w którym utworzono partycję dostawcy. |