Poziom interfejsu Vendor API

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.