SDV では、カスタム /oem_ab パーティションの A/B アップデートが可能です。OEM AB Updater ライブラリを使用して、カスタム /oem_ab パーティションのアップデートをトリガーしてロールバックします。これは、Android システムの A/B アップデートと同様の機能です。
system/software_defined_vehicle/samples/oem_partition_update_client で、OEM AB Updater ライブラリの実装のサンプルコードをご覧ください。
このガイドでは、OEM AB Updater ライブラリを使用して、独自の Updater Service 実装と統合する方法について説明します。このガイドでは、Cuttlefish を使用して変更をビルドしてテストすることを前提としています。
ライブラリの場所
OEM AB アップデータ ライブラリは 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
新しい VM を起動する
ブロック デバイスがマッピングされていることを確認したら、3 つのカスタム イメージを使用して新しい VM を作成します。
cvd create --custom_partition_path="$OUT/oem_ab.img;$OUT/oem_ab.img;$OUT/oem_ab_metadata.img"
新しいサービスで OEM AB Updater ライブラリを使用する
別のサービスでライブラリを使用するには:
system/software_defined_vehicle/samples/oem_partition_update_client/oem_partition_client.rsで示すように、sdv_oem_updater::OemUpdaterクレートをインポートします。device/google/sdv/sdv_core_cf/sepolicy/product/private/oem_partition_client.teで定義されている SELinux ポリシーと同様の新しい.teポリシーを作成します。