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), oraz interfejs API, którego potrzebuje partycja dostawcy od partycji systemowej (interfejs LLNDK).

Poziom interfejsu Vendor API 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 na partycji dostawcy.

Z dalszej części tej strony dowiesz się, jak właściwości systemowe są używane (w zależności od wersji Androida) do określania poziomu interfejsu API dostawcy.

Wstrzymanie 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ą. W czasie działania oprogramowania działającego na partycji systemowej dostosowuje się do poziomu interfejsu API dostawcy w partycji dostawcy. Na przykład oprogramowanie na partycji systemowej może nie obsługiwać 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śl poziom interfejsu API dostawcy (Android 14-QPR3 lub nowszy)

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 publikacji w Androidzie 14–QPR3 i nowszych poziom interfejsu API dostawcy jest całkowicie niezależny od poziomu interfejsu SDK API. 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 systemowe 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, na którym po raz pierwszy wprowadzono oprogramowanie chipsetu. 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. 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 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 dostawcy:

    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, na którym po raz pierwszy wprowadzono oprogramowanie chipsetu. 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 ustawiona tylko dla chipsetów, które kwalifikują się do blokady dostawcy. Ta właściwość jest ustawiona dla wszystkich chipsetów. Początkowo wartość tej właściwości jest ustawiana przez system kompilacji na tę samą wartość co ro.board.first_api_level, ale można ją zaktualizować, gdy partycja dostawcy zostanie uaktualniona.
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 spełniać całe urządzenie. Opisane pod tabelą.
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 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.