Уровень 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.board.api_level ГГГГММ Уровень API поставщика, поддерживаемый программным обеспечением чипсета. Это свойство устанавливается для всех чипсетов. Это устанавливается системой сборки автоматически.
ro.board.first_api_level ГГГГММ Уровень API поставщика, с которым программное обеспечение чипсета было впервые выпущено. Это свойство зависит только от чипсета и устанавливается поставщиками SoC, если чипсет SoC соответствует требованиям для «заморозки поставщика». После первоначальной установки это свойство следует считать окончательным и не изменять. Хотя это крайне нежелательно, обновление может быть разрешено в редких, исключительных случаях при получении нового разрешения на «заморозку поставщика». Производители SoC устанавливают этот параметр с помощью BOARD_SHIPPING_API_LEVEL .
ro.product.first_api_level Целое число Уровень API SDK, с которым устройство запускается изначально. Этот параметр устанавливается производителем оборудования и никогда не обновляется, даже после обновления операционной системы.
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, с которым устройство запускается изначально. Этот параметр устанавливается производителем оборудования и никогда не обновляется, даже после обновления операционной системы.
ro.vendor.api_level Целое число Аналогично описанию уровня API поставщика в предыдущей таблице.
ro.vndk.version Целое число Версия VNDK, для которой создан раздел поставщика. Этот параметр задаётся в разделе поставщика.
ro.vendor.build.version.sdk Целое число Уровень API SDK в исходном коде, где был создан раздел поставщика.