Atualizações de partição AB do OEM

O SDV permite atualizações A/B para a partição personalizada /oem_ab. Use a biblioteca OEM AB Updater para acionar e reverter atualizações da partição /oem_ab personalizada, com recursos semelhantes às atualizações A/B do sistema Android.

Consulte o exemplo de código de uma implementação de biblioteca do OEM AB Updater em system/software_defined_vehicle/samples/oem_partition_update_client.

O guia descreve como usar a biblioteca OEM AB Updater e integrá-la à sua própria implementação do serviço de atualização. Neste guia, pressupomos que você esteja usando o Cuttlefish para criar e testar suas mudanças.

Local da biblioteca

A biblioteca do OEM AB Updater está no diretório system/software_defined_vehicle/platform/oem.

Criar as imagens personalizadas necessárias

A biblioteca OEM AB Updater exige várias imagens personalizadas. Essas imagens são definidas em device/google/sdv/sdv_core_base/oem_ab/oem_ab.mk e device/google/sdv/sdv_core_base/oem_ab/oem_ab_metadata.mk.

As imagens personalizadas necessárias definidas em oem_ab.mk e oem_ab_metadata.mk são criadas quando o destino é criado. Por exemplo, a criação de sdv_core_cf cria as imagens de partição:

source build/envsetup.sh
lunch sdv_core_cf-trunk_staging-userdebug
m

Especificar dispositivos de transferência por blocos personalizados

Verifique se o destino lunch do Cuttlefish define o BOARD_BOOTCONFIG para mapear os dispositivos de bloco para a propriedade bootconfig correspondente. Por exemplo, consulte 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

Iniciar uma nova VM

Depois de verificar se os dispositivos de bloco estão mapeados, crie uma nova VM com as três imagens personalizadas:

cvd create --custom_partition_path="$OUT/oem_ab.img;$OUT/oem_ab.img;$OUT/oem_ab_metadata.img"

Usar a biblioteca OEM AB Updater em um novo serviço

Para usar a biblioteca em outro serviço:

  1. Importe a crate sdv_oem_updater::OemUpdater, conforme demonstrado em 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`.