OEM AB 分区更新

SDV 可为自定义 /oem_ab 分区启用 A/B 更新。您可以使用 OEM AB Updater 库触发和回滚自定义 /oem_ab 分区的更新,其功能与 Android 系统 A/B 更新类似。

如需查看 OEM AB Updater 库实现的示例代码,请参阅 system/software_defined_vehicle/samples/oem_partition_update_client

本指南介绍了如何使用 OEM AB Updater 库并将其与您自己的 Updater Service 实现集成。本指南假定您使用 Cuttlefish 构建和测试更改。

库位置

OEM AB Updater 库位于 system/software_defined_vehicle/platform/oem 目录中。

构建所需的自定义映像

OEM AB Updater 库需要多个自定义映像。这些映像在 device/google/sdv/sdv_core_base/oem_ab/oem_ab.mkdevice/google/sdv/sdv_core_base/oem_ab/oem_ab_metadata.mk 中定义。

构建目标时,系统会创建 oem_ab.mkoem_ab_metadata.mk 中定义的所需自定义映像。例如,构建 sdv_core_cf 会创建以下分区映像:

source build/envsetup.sh
lunch sdv_core_cf-trunk_staging-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 库

如需在其他服务中使用该库,请执行以下操作:

  1. 导入 sdv_oem_updater::OemUpdater crate,如 system/software_defined_vehicle/samples/oem_partition_update_client/oem_partition_client.rs 中所示。

. Create a new.tepolicy similar to the SELinux policies defined indevice/google/sdv/sdv_core_cf/sepolicy/product/private/oem_partition_client.te`。