SDV позволяет использовать A/B-обновления для пользовательского раздела /oem_ab. Используйте библиотеку OEM AB Updater, чтобы запускать и откатывать обновления для пользовательского раздела /oem_ab. Ее возможности аналогичны A/B-обновлениям системы Android.
См. образец кода для реализации библиотеки OEM AB Updater в файле system/software_defined_vehicle/samples/oem_partition_update_client.
В этом руководстве описывается, как использовать библиотеку OEM AB Updater и интегрировать ее с собственной реализацией службы обновления. В этом руководстве предполагается, что вы используете Cuttlefish для создания и тестирования изменений.
Местоположение библиотеки
Библиотека OEM AB Updater находится в каталоге system/software_defined_vehicle/platform/oem.
Создайте необходимые пользовательские образы
Для библиотеки OEM AB Updater требуется несколько пользовательских образов. Эти изображения определены в device/google/sdv/sdv_core_base/oem_ab/oem_ab.mk и device/google/sdv/sdv_core_base/oem_ab/oem_ab_metadata.mk.
Обязательные пользовательские образы, определенные в oem_ab.mk и oem_ab_metadata.mk, создаются при сборке цели. Например, при сборке sdv_core_cf создаются следующие образы разделов:
source build/envsetup.sh
lunch sdv_core_cf-aosp_current-userdebug
m
Как указать настраиваемые блочные устройства
Убедитесь, что целевое устройство Cuttlefish lunch устанавливает BOARD_BOOTCONFIG, чтобы сопоставить блочные устройства с соответствующим свойством bootconfig. Пример: device/google/sdv/sdv_core_cf/BoardConfig.mk.
BOARD_BOOTCONFIG += \
androidboot.sdv.oem_slot_a_device=/dev/block/by-name/custom \
androidboot.sdv.oem_slot_b_device=/dev/block/by-name/custom_1
Запустить новую ВМ
Убедившись, что блочные устройства сопоставлены, создайте новую виртуальную машину с тремя пользовательскими образами:
cvd create --custom_partition_path="$OUT/oem_ab.img;$OUT/oem_ab.img;$OUT/oem_ab_metadata.img"
Используйте библиотеку OEM AB Updater в новом сервисе
Чтобы использовать библиотеку в другом сервисе:
Импортируйте крейт
sdv_oem_updater::OemUpdater, как показано вsystem/software_defined_vehicle/samples/oem_partition_update_client/oem_partition_client.rs.Создайте новое правило
.te, похожее на правила SELinux, определенные вdevice/google/sdv/sdv_core_cf/sepolicy/product/private/oem_partition_client.te.