Poziom interfejsu Vendor API

Poziom interfejsu API dostawcy odnosi się do wersji interfejsu obsługiwanej przez partycji dostawcy. Interfejs działa dwukierunkowo, opisuje interfejs API, które partycja dostawcy udostępnia partycji systemowej (sprzęt warstwa abstrakcji lub interfejs HAL) oraz interfejs API, który partycjonuje dostawca wymaga z partycji systemowej (pakietu natywnego dla programistów niskiego poziomu lub interfejsu LLNDK).

Poziom interfejsu Vendor API jest też używany do określania wymagań dotyczących oprogramowania dostawcy (VSR), czyli zbiór wymagań funkcjonalnych i niefunkcjonalnych, które musi spełniać wymagania oprogramowania w partycji dostawcy.

Pozostała część tej strony zawiera informacje o tym, jak system są używane w zależności od wersji Androida do określenia dostawcy poziom interfejsu API.

Wstrzymanie dostawcy

Android umożliwia dostawcy zablokowanie partycji dostawcy w określonej wersji VSR. Zestaw funkcji, których Android oczekuje od partycji dostawcy, zależy od poziom interfejsu API dostawcy powiązany z partycją dostawcy. W czasie działania oprogramowania działającego na partycji systemowej dostosowuje się do poziom interfejsu API dostawcy partycji dostawcy. Na przykład oprogramowanie w partycja systemu może nie obsługiwać nowych funkcji, jeśli nie są one obsługiwane przez na poziomie interfejsu API partycji dostawcy.

Blokada dostawców jest dostępna tylko wtedy, gdy tworzysz Urządzenie zgodne z Androidem.

Określ poziom interfejsu API dostawcy (Android 14-QPR3 i nowsze)

W Androidzie 14-QPR3 i nowszych poziom interfejsu API dostawcy to opublikowane oddzielnie, co oznacza poziom interfejsu API pakietu SDK i dostawcę. Poziom interfejsu API nie jest zsynchronizowany.

Ze względu na oddzielne harmonogramy publikacji na Androida 14-QPR3 i nowsze, poziom interfejsu API dostawcy jest całkowicie odłączony od poziomu interfejsu SDK API. Aby mieć pewność, że to odłączenie jest wyraźne, funkcja format poziomu interfejsu API dostawcy to data w formacie RRRRMM (rok i miesiąc) a poziom SDK jest liczbą całkowitą.

Android 14-QPR3 i nowsze zawierają ten system właściwości powiązane z poziomem interfejsu API dostawcy (ro.vendor.api_level):

Właściwość systemowa Format Opis Ustawienie początkowe
ro.board.api_level RRRRMM Poziom interfejsu API dostawcy 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 RRRRMM Poziom interfejsu API dostawcy, na którym po raz pierwszy wprowadzono oprogramowanie chipsetu. Ta właściwość jest tylko funkcją chipsetu i jest ustawiana przez dostawców układów SOC, jeśli dany układ SOC kwalifikuje się do blokady dostawcy. Po wstępnym ustawieniu nie można go modyfikować. Dostawcy SOC ustawiają to ustawienie za pomocą BOARD_SHIPPING_API_LEVEL.
ro.product.first_api_level Liczba całkowita Poziom interfejsu API pakietu SDK, na którym urządzenie jest początkowo uruchamiane. Ta właściwość jest ustawiana przez OEM i nigdy nie jest aktualizowana, nawet po zaktualizowaniu systemu operacyjnego.
ro.vendor.api_level RRRRMM Poziom interfejsu API dostawcy, z którym musi spełniać całe urządzenie. Opisane pod tabelą.
ro.board.api_frozen Wartość logiczna Ta właściwość jest ustawiona na true, jeśli poziom interfejsu API dostawcy reprezentowany przez ro.board.api_level został 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 jest dostępny w bieżącym pliku LLNDK w partycji systemowej. Plik LLNDK jest zgodny wstecznie, więc z tym obrazem systemu można przesłać dowolny obraz dostawcy, który jest mniejszy lub równy temu poziomowi interfejsu API. Ta właściwość jest ustawiana przez partycję systemową.

Właściwość ro.vendor.api_level jest uzyskiwana na jeden z 2 sposobów:

  • Jeśli chipset spełnia wymagania blokady dostawcy:

    ro.vendor.api_level = min(
      ro.board.api_level,
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
    
  • Jeśli chipset nie jest zablokowany przez dostawcę:

    ro.vendor.api_level =
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
    

Metoda AVendorSupport_getVendorApiLevelOf() określa odpowiednią wartość API dostawcy z poziomu interfejsu SDK API. Przykład: AVendorSupport_getVendorApiLevelOf(35), gdzie 35 to poziom interfejsu API pakietu SDK wersji głównej Androida w 2024 r. zwraca 202404, czyli przybliżoną datę Android 14–QPR3, gdy obecny poziom interfejsu Vendor API to ustawiony.

Określanie poziomu interfejsu API dostawcy (Android 13)

Poziom interfejsu API dostawcy jest zgodny z poziomem interfejsu SDK API, który jest przeznaczony dla systemu operacyjnego aplikacji i jest aktualizowany raz w roku po udostępnieniu nowej platformy Androida. do AOSP.

Android 13 zawiera ten system właściwości powiązane z poziomem interfejsu API dostawcy (ro.vendor.api_level):

Właściwość systemowa Format Opis Ustawienie 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 wyłącznie w przypadku chipsetów i nie mogą jej modyfikować ani dostawcy układów SOC, ani producenci OEM. Ta właściwość jest ustawiona tylko dla chipsetów, które kwalifikują się do blokady dostawcy 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 obsługiwany przez 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, na którym urządzenie jest początkowo uruchamiane. Ta właściwość jest ustawiana przez OEM i nigdy nie jest aktualizowana, nawet po zaktualizowaniu 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 podstawie której jest utworzona 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, na którym utworzono partycję dostawcy.
ro.vendor.build.version.release Liczba całkowita Wersja platformy drzewa źródłowego, na 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 minimalną wartość ro.board.api_level (lub ro.board.first_api_level, jeśli ro.board.api_level nie jest zdefiniowana) oraz ro.product.first_api_level