Уровень 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 | Целое число | Уровень API SDK дерева исходного кода, в котором был создан раздел поставщика. | |
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
.