تعديلات على قسمَي A/B في أجهزة المصنّع الأصلي للجهاز

تتيح ميزة "التحديثات المباشرة" إجراء تحديثات 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 ودمجها مع عملية تنفيذ خدمة 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-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 كما هو موضّح في 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`.