تحديثات نظام A/B

تتّبع SDV نهج Android العادي لتحديثات النظام من النوع أ/ب (بدون التوقّف عن استخدام الهاتف). تنطبق مستندات AOSP بشكل أساسي على SDV. توضّح هذه الصفحة تفاصيل الاستخدام الخاصة بـ SDV والمسارات الجيدة المعروفة لإنشاء حِزم التحديث وتطبيقها.

في الوقت الحالي، تم ضبط SDV لاستخدام تحديثات من النوع أ/ب غير افتراضية.

تنفيذ HAL للتحكّم في عملية التشغيل

توفر صورة SDV Core لجهاز Cuttlefish ‏ (sdv_core_cf) تنفيذًا عاديًا لواجهة HAL للتحكم في عملية التشغيل استنادًا إلى hardware/interfaces/boot/aidl/default/. على برامج تحميل التشغيل الأخرى تنفيذ واجهة HAL لدعم تحديثات من النوع أ/ب.

يُرجى الرجوع إلى قسم تنفيذ واجهة HAL للتحكّم في عملية التشغيل في مستندات AOSP لمعرفة التفاصيل. يمكنك استخدام bootctl المضمّن في صور SDV للتصحيح (eng و userdebug) لاختبار التنفيذ.

إنشاء حزمة OTA

لمزيد من المعلومات، يُرجى الاطّلاع على مقالة إنشاء حِزم OTA. تتّبع التعليمات الواردة في هذه الصفحة مستندات AOSP مع بعض الاختلافات البسيطة.

تحديث كامل

من جذر المستودع، يُرجى تنفيذ ما يلي:

source build/envsetup.sh && lunch sdv_core_cf-trunk_staging-userdebug
mkdir dist_output
m dist DIST_DIR=dist_output

تنتج هذه الأوامر ملفات مستهدَفة في دليل dist_output. بالنسبة إلى عمليات الإنشاء المحلية لـ sdv_core_cf، يكون هذا الدليل عادةً sdv_core_cf-target_files-$USER.zip.

لإنشاء حزمة OTA، عليك استخدام ota_from_target_files. على عكس AOSP، لا يتم إنشاء الحزمة كجزء من m dist.

m ota_from_target_files
ota_from_target_files \
  dist_output/sdv_core_cf-target_files-$USER.zip \
  ota_update.zip

تحديث إضافي

يتم استدعاء ota_from_target_files بالطريقة نفسها كما في AOSP:

ota_from_target_files \
  -i PREVIOUS-sdv_core_cf-target_files.zip \
  dist_new/sdv_core_cf-target_files-$USER.zip \
  incremental_ota_update.zip

تثبيت حزمة OTA

يتم تثبيت التحديثات باستخدام خدمة update_engine. تتضمّن إصدارات SDV للتصحيح update_engine_client التي يمكن استخدامها لتصحيح عملية التحديث واختبارها.

لتثبيت حزمة OTA، يُرجى تنفيذ ما يلي:

system/update_engine/scripts/update_device.py ota_update.zip

إذا تم تثبيت التحديث بشكل صحيح (كانت الحالة النهائية UPDATE_STATUS_UPDATED_NEED_REBOOT وكانت النتيجة ErrorCode::kSuccess)، سيتم تفعيل التحديث عند إعادة التشغيل التالية.

تحديد الإصدار

بالنسبة إلى تحديثات النظام، تستخدم SDV بيانات وصفية لحزمة OTA من Android لتحديد ما إذا كانت حزمة OTA تستوفي المتطلبات ويمكن تثبيتها.

بالنسبة إلى حِزم APEX أيضًا، تتّبع SDV مفاهيم Android المتعلقة بإمكانية التحديث. لذلك، يمكن تحديث حزمة APEX عندما لا تكون حزمة APEX للتشغيل الأولي . يجب تحديث حزمة APEX للتشغيل الأولي من خلال تحديثات النظام، ويجب أن يكون أحد الشرطَين التاليَين متحقّقًا:

  • الإصدار المُعلَن عنه أعلى من الإصدار المثبَّت مسبقًا، و كلاهما أكبر من 1 أو يساويه،

أو

عادةً ما يتم نشر SDV على أنظمة متعددة في شبكة. لذلك، عليك التأكّد من تنفيذ التحديثات التي يتم إجراؤها على نظام واحد بشكل صحيح. مع ذلك، لا يضمن هذا الإجراء إمكانية تواصل جميع الأنظمة بشكل صحيح.

من المهم أيضًا تعديل الشبكة بشكل عام، ما يتطلب نشر التحديثات على حِزم الخدمات على جميع الأجهزة في الوقت نفسه أو ألا تتضمّن التحديثات أي تغييرات غير متوافقة. على سبيل المثال، التغييرات غير المتوافقة على الواجهة.

على الرغم من أنّ SDV لا توفّر أدوات لرصد التغييرات غير المتوافقة، تصف إرشاداتنا كيفية التوفيق بين التغييرات التي يتم إجراؤها على الواجهات بالإضافة إلى أفضل الممارسات اللازمة لنشر التغييرات.

بالإضافة إلى ذلك، تتيح SDV آليات التراجع عن تحديثات النظام وحِزم APEX. إذا دخل النظام عن غير قصد في حالة غير مرضية، يمكننا استرداد آخر حالة مرضية معروفة.