Уровень API поставщика

Уровень API поставщика относится к версии интерфейса, поддерживаемой разделом поставщика. Интерфейс двунаправленный; он описывает API, который раздел поставщика предоставляет системному разделу (уровень аппаратной абстракции или интерфейс HAL), а также API, который раздел поставщика требует от системного раздела (нативный низкоуровневый набор разработчиков или интерфейс LLNDK).

Уровень API поставщика также используется для определения требований к программному обеспечению поставщика (VSR), которые представляют собой набор функциональных и нефункциональных требований, которым должно удовлетворять программное обеспечение в разделе поставщика.

В оставшейся части этой страницы объясняется, как в зависимости от версии Android используются системные свойства для определения уровня API поставщика.

Заморозка поставщика

Android позволяет поставщику заморозить раздел поставщика на определенной версии VSR. Набор функций, которые Android ожидает от раздела поставщика, определяется уровнем API поставщика, связанным с разделом поставщика. Во время выполнения поведение программного обеспечения, работающего в системном разделе, настраивается в соответствии с уровнем API поставщика раздела поставщика. Например, программное обеспечение в системном разделе может не использовать новые функции, если они не поддерживаются уровнем API раздела поставщика.

Заморозка поставщика доступна только в том случае, если вы создаете Android-совместимое устройство .

Определить уровень API поставщика (Android 14-QPR3 и более поздних версий)

Для Android 14-QPR3 и более поздних версий уровень API поставщика выпускается отдельно, что означает, что уровень API SDK и уровень API поставщика не синхронизированы.

Из-за отдельных графиков выпуска для Android 14-QPR3 и более поздних версий уровень API поставщика полностью отделен от уровня API SDK. Чтобы обеспечить четкое разделение, формат уровня API поставщика — это дата в формате ГГГГММ (год и месяц), а уровень SDK — целое число.

Android 14-QPR3 и более поздних версий содержит следующие системные свойства, связанные с уровнем API поставщика ( ro.vendor.api_level ):

Системное свойство Формат Описание Начальная настройка
ro.board.api_level ГГГГММ Уровень API поставщика, который поддерживает программное обеспечение набора микросхем. Это свойство установлено для всех чипсетов. Это устанавливается системой сборки автоматически.
ro.board.first_api_level ГГГГММ Уровень API поставщика, с которым впервые было выпущено программное обеспечение набора микросхем. Это свойство является функцией только набора микросхем и устанавливается поставщиками SoC, если набор микросхем SoC соответствует требованиям для замораживания поставщика. После первоначальной настройки ее нельзя изменять. Поставщики SoC устанавливают этот параметр с помощью BOARD_SHIPPING_API_LEVEL .
ro.product.first_api_level Целое число Уровень API SDK, с которым устройство изначально запускается. Это свойство устанавливается OEM-производителем и никогда не обновляется, даже после обновления ОС.
ro.vendor.api_level ГГГГММ Уровень API поставщика, которому должно соответствовать устройство в целом. Описано после этой таблицы.
ro.board.api_frozen логическое значение Для этого свойства установлено значение true , если уровень API поставщика, который представляет ro.board.api_level , завершен. Если это свойство не установлено, по умолчанию оно имеет значение false .
ro.llndk.api_level ГГГГММ Уровень API поставщика в формате ГГГГММ, который предоставляет текущий LLNDK в системном разделе. LLNDK обратно совместим, поэтому любой образ поставщика, который ниже или равен этому уровню API, может быть прошит этим образом системы. Это свойство задается системным разделом.

Свойство ro.vendor.api_level получается одним из двух следующих способов:

  • Если набор микросхем соответствует критериям замораживания поставщика:

    ro.vendor.api_level = min(
      ro.board.api_level,
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
    
  • Если набор микросхем не находится под заморозкой поставщика:

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

Метод AVendorSupport_getVendorApiLevelOf() определяет соответствующий уровень API поставщика на основе уровня API SDK. Например, AVendorSupport_getVendorApiLevelOf(35) , где 35 — это уровень API SDK основной версии Android в 2024 году, возвращает 202404 , что является приблизительной датой для Android 14-QPR3, когда был установлен текущий уровень API поставщика.

Определить уровень API поставщика (Android 13)

Уровень API поставщика соответствует уровню API SDK, который предназначен для интерфейса приложения и ОС и обновляется один раз в год, когда новая платформа Android выпускается для AOSP.

Android 13 содержит следующие системные свойства, связанные с уровнем API поставщика ( ro.vendor.api_level ):

Системное свойство Формат Описание Начальная настройка
ro.board.first_api_level Целое число Уровень API поставщика, с которым впервые было выпущено программное обеспечение набора микросхем. Это функция только чипсета, и она не может быть изменена ни поставщиками SoC, ни OEM-производителями. Это свойство установлено только для наборов микросхем, подпадающих под действие заморозки поставщиков. Значение устанавливается путем установки BOARD_SHIPPING_API_LEVEL в файле device.mk .
ro.board.api_level Целое число Уровень API поставщика, который поддерживает программное обеспечение набора микросхем. Это свойство установлено только для наборов микросхем, подпадающих под действие заморозки поставщиков. Это свойство установлено для всех чипсетов. Первоначально значение этого свойства устанавливается системой сборки равным значению ro.board.first_api_level , но может быть обновлено при обновлении раздела поставщика.
ro.product.first_api_level Целое число Уровень API SDK, с которым устройство изначально запускается. Это свойство устанавливается OEM-производителем и никогда не обновляется, даже после обновления ОС.
ro.vendor.api_level Целое число Уровень API поставщика, которому должно соответствовать устройство в целом. Описано после этой таблицы.
ro.vndk.version Целое число Версия VNDK, на основе которой построен раздел поставщика. Это свойство задается системным разделом.
ro.vendor.build.version.sdk Целое число Уровень SDK API дерева исходного кода, в котором был создан раздел поставщика.
ro.vendor.build.version.release Целое число Платформенная версия дерева исходного кода, в которой был построен раздел поставщика.
ro.vendor.build.version.release_or_codename Целое число Кодовое имя исходного дерева, в котором был построен раздел поставщика.

Для свойства ro.vendor.api_level автоматически устанавливается минимальное значение ro.board.api_level (или ro.board.first_api_level если ro.board.api_level не определено) и ro.product.first_api_level .