При разработке и выпуске новых устройств поставщики могут определить и объявить целевую версию FCM в манифесте устройства (DM). При обновлении образа поставщика для старых устройств поставщики могут реализовать новые версии HAL и увеличить целевую версию FCM.
Разрабатывать новые устройства
При определении целевой версии FCM устройства для новых устройств:
- Оставьте
DEVICE_MANIFEST_FILE
иPRODUCT_ENFORCE_VINTF_MANIFEST
неопределенными. - Внедрите HAL для целевой версии FCM.
- Напишите правильный файл манифеста устройства.
- Запишите целевую версию FCM в файл манифеста устройства.
- Установите
DEVICE_MANIFEST_FILE
. - Установите
PRODUCT_ENFORCE_VINTF_MANIFEST
значениеtrue
.
Выпуск новых устройств
При выпуске нового устройства его первоначальную целевую версию FCM необходимо определить и объявить в манифесте устройства как атрибут « target-level
» в элементе <manifest>
верхнего уровня.
Например, устройства, запускаемые с Android 9, должны иметь целевую версию FCM, равную 3 (более поздняя версия, доступная на данный момент). Чтобы объявить это в манифесте устройства:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
Обновить изображение поставщика
При обновлении образа поставщика для старого устройства поставщики могут реализовать новые версии HAL и увеличить целевую версию FCM.
Обновление HAL
Во время обновления образа поставщика поставщики могут внедрять новые версии HAL при условии, что имя HAL, имя интерфейса и имя экземпляра совпадают. Например:
- Устройства Google Pixel 2 и Pixel 2 XL выпущены с целевой версией FCM 2, в которой реализован необходимый HAL аудио 2.0
android.hardware.audio@2.0::IDeviceFactory/default
. - Для аудио 4.0 HAL, выпущенного вместе с Android 9, устройства Google Pixel 2 и Pixel 2 XL могут использовать полную версию OTA для обновления до HAL 4.0, которая реализует
android.hardware.audio@4.0::IDeviceFactory/default
. - Несмотря на то, что в
compatibility_matrix.2.xml
указано только аудио 2.0, требование к образу поставщика с целевой версией FCM 2 было ослаблено, поскольку платформа Android 9 (версия FCM 3) считает аудио 4.0 заменой аудио 2.0 HAL с точки зрения функциональности. .
Подводя итог, учитывая, что для compatibility_matrix.2.xml
требуется аудио 2.0, а compatibility_matrix.3.xml
требуется аудио 4.0, требования следующие:
Версия FCM (система) | Целевая версия FCM (поставщик) | Требования |
---|---|---|
2 (8,1) | 2 (8,1) | Аудио 2.0 |
3 (9) | 2 (8,1) | Аудио 2.0 или 4.0 |
3 (9) | 3 (9) | Аудио 4.0 |
Обновить целевую версию FCM
Во время обновления образа поставщика поставщики также могут увеличить целевую версию FCM, чтобы указать целевую версию FCM, с которой может работать обновленный образ поставщика. Чтобы обновить целевую версию устройства FCM, поставщикам необходимо:
- Внедрите все новые необходимые версии HAL для целевой версии FCM.
- Измените версии HAL в файле манифеста устройства.
- Измените целевую версию FCM в файле манифеста устройства.
- Удалите устаревшие версии HAL.
Например, устройства Google Pixel и Pixel XL запущены с Android 7.0, поэтому их целевая версия FCM должна быть как минимум устаревшей. Однако в манифесте устройства указана целевая версия FCM 2, поскольку образ поставщика был обновлен в соответствии с compatibility_matrix.2.xml
:
<manifest version="1.0" type="device" target-level="2">
Если поставщики не внедряют все необходимые новые версии HAL или не удаляют устаревшие версии HAL, целевую версию FCM невозможно обновить.
Например, устройства Google Pixel 2 и Pixel 2 XL имеют целевую версию FCM 2. Хотя они реализуют некоторые HAL, требуемые compatibility_matrix.3.xml
(например, audio 4.0, health 2.0 и т. д.), они не удаляют android.hardware.radio.deprecated@1.0
, который устарел в FCM версии 3 (Android 9). Следовательно, эти устройства не могут обновить целевую версию FCM до 3.
Утверждение требований к ядру во время OTA
Обновление устройств с Android 9 или ниже
На устройствах с Android 9 или более ранней версии убедитесь, что выбраны следующие CL:
Эти изменения вводят флаг сборки PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
и оставляют этот флаг неустановленным для устройств, запущенных с Android 9 или более ранней версии.
- При обновлении до Android 10 OTA-клиенты на устройствах под управлением Android 9 или более ранней версии неправильно проверяют требования ядра в пакете OTA. Эти изменения необходимы для исключения требований ядра из сгенерированного пакета OTA.
- При обновлении до Android 11 необязательно устанавливать флаг сборки
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
для проверки совместимости VINTF при создании пакета обновления.
Дополнительные сведения об этом флаге сборки см. в разделе Обновление устройств с Android 10 .
Обновление устройств с Android 10
В Android 10 представлен новый флаг сборки PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
. Для устройств, запущенных с Android 10, для этого флага автоматически устанавливается значение true
. Если для флага установлено значение true
, сценарий извлекает версию ядра и конфигурации ядра из установленного образа ядра.
- При обновлении до Android 10 пакет обновления OTA содержит версию и конфигурацию ядра. OTA-клиенты на устройствах под управлением Android 10 читают эту информацию, чтобы проверить совместимость.
- При обновлении до Android 11 жанр пакета OTA считывает версию и конфигурацию ядра для проверки совместимости.
Если сценарию не удается извлечь эту информацию для вашего образа ядра, выполните одно из следующих действий:
- Отредактируйте сценарий для поддержки вашего формата ядра и внесите свой вклад в AOSP.
- Задайте для
BOARD_KERNEL_VERSION
версию ядра, аBOARD_KERNEL_CONFIG_FILE
— путь к встроенному файлу конфигурации ядра.config
. Обе переменные должны обновляться при обновлении образа ядра. - Альтернативно, установите
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
значениеfalse
, чтобы пропустить проверку требований ядра. Это не рекомендуется, поскольку любая несовместимость скрыта и обнаруживается только при запуске тестов VTS после обновления.
Вы можете просмотреть исходный код скрипта извлечения информации о ядре extract_kernel.py
.