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 interfejsu 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 wydawany osobno, co oznacza, że poziom interfejsu API pakietu SDK i poziom interfejsu API dostawcy są niezsynchronizowane.

Ze względu na oddzielne harmonogramy wersji w przypadku Androida 14-QPR3 i nowszych poziom interfejsu API dostawcy jest całkowicie niezależny od poziomu interfejsu API pakietu SDK. Aby zapewnić przejrzystość 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 zawiera te właściwości systemu związane z poziomem interfejsu API dostawcy:

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 po raz pierwszy. 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 odpowiadający wartości ro.product.first_api_level. Ustawiamy ro.vendor.api_level na wartość ro.board.api_level, gdy ro.board.api_level jest mniejsza niż wartość poziomu interfejsu API dostawcy ro.product.first_api_level, tylko jeśli chipset SoC kwalifikuje się do zamrożenia dostawcy. 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 dostawcy na poziomie API niższym niż ten lub równym. Ta właściwość jest ustawiana w partycji systemowej.

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 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 w przypadku głównego wydania Androida w 2024 r., zwraca 202404, czyli przybliżoną datę Androida 14-QPR3, w której 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 systemu związane z poziomem interfejsu API dostawcy:

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 dostawcy 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 po raz pierwszy. 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 Taki sam jak w przypadku dostawcy w poprzedniej tabeli.
ro.vndk.version Liczba całkowita Wersja VNDK, na której została skompilowana partycja dostawcy. Ta właściwość jest ustawiana w partycji dostawcy.
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.