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 (warstwa abstrakcji sprzętu lub interfejs HAL), a także interfejs API, którego partycja dostawcy wymaga od partycji systemowej (zestaw narzędzi dla deweloperów niskiego poziomu lub interfejs LLNDK).

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

W pozostałej części tej strony wyjaśniono, jak właściwości systemowe są używane do określania poziomu interfejsu API dostawcy w zależności od wersji Androida.

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 na 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 nowszy)

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 nie są zsynchronizowane.

Ze względu na oddzielne harmonogramy publikacji w przypadku Androida 14 QPR3 i nowszych poziom interfejsu API dostawcy jest całkowicie oddzielony od poziomu interfejsu API pakietu SDK. Aby zapewnić jasność tego rozdzielenia, poziom interfejsu API dostawcy jest datą w formacie RRRRMM (rok i miesiąc), a poziom pakietu SDK jest liczbą całkowitą.

Android 14 QPR3 i nowsze wersje zawierają te właściwości systemu związane z poziomem interfejsu API dostawcy:

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, z którym po raz pierwszy wydano 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 początkowym ustawieniu tę właściwość należy uznać za ostateczną i nie modyfikować jej. Chociaż zdecydowanie odradzamy takie działanie, w rzadkich, wyjątkowych przypadkach aktualizacja może być dozwolona, jeśli dostawca przejdzie nową kwalifikację. Producenci 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 RRRRMM Poziom interfejsu API dostawcy, który odpowiada ro.product.first_api_level. Wartość ro.vendor.api_level ustawiamy 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ść 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ślnie stosowana jest wartość 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 wstecznie, więc każdy obraz dostawcy, który jest mniejszy lub równy temu poziomowi interfejsu API, można sflashować za pomocą tego obrazu systemu. Ta właściwość jest ustawiona w partycji systemowej.

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

  • Jeśli chipset został zakwalifikowany 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 interfejsu API dostawcy jest zgodny z poziomem interfejsu API pakietu SDK, który jest przeznaczony dla interfejsu aplikacji i systemu operacyjnego i jest aktualizowany raz w roku, gdy nowa platforma Androida jest udostępniana w AOSP.

Android 13 zawiera te właściwości systemowe związane z poziomem interfejsu API dostawcy:

Właściwość systemowa Format Opis Ustawienie początkowe
ro.board.first_api_level Liczba całkowita Poziom interfejsu API dostawcy, z którym po raz pierwszy wydano 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 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ą 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 Tak samo jak opis poziomu interfejsu API dostawcy w poprzedniej tabeli.
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 została utworzona partycja dostawcy.