Poziom interfejsu API dostawcy

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.