Уровень 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.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.product.first_api_level . Мы устанавливаем ro.vendor.api_level равным значению ro.board.api_level , когда ro.board.api_level меньше уровня API поставщика ro.product.first_api_level , только если чипсет SoC подходит для заморозки поставщика. | Описано после этой таблицы. |
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.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 исходного дерева, на котором был создан раздел поставщика. |