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