Уровень 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 поставщика в формате YYYYMM, который предоставляет текущий 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 исходного дерева, на котором был создан раздел поставщика. |