«خودروی نرمافزارمحور» از رویکرد استاندارد Android برای بهروزرسانیهای سیستم A/B (یکپارچه) پیروی میکند. اسناد AOSP عمدتاً برای خودروهای نرمافزارمحور اعمال میشود. این صفحه جزئیات استفاده مختص SDV و مسیرهای خوب شناختهشده برای ساختن و اعمال کردن بستههای بهروزرسانی را ارائه میدهد.
SDV برای استفاده از بهروزرسانیهای A/B غیرمجازی پیکربندی شده است. برای پیکربندی و راهاندازی بهروزرسانیهای A/B برای بخش /oem_ab سفارشی از یک بسته سرویس، به بهروزرسانیهای بخش AB سازنده اصلی مراجعه کنید.
پیادهسازی HAL کنترل راهاندازی
تصویر SDV Core برای Cuttlefish (sdv_core_cf) پیادهسازی استانداردی از HAL کنترل راهاندازی براساس hardware/interfaces/boot/aidl/default/ ارائه میدهد. سایر بوتلودرها باید HAL را برای پشتیبانی از بهروزرسانیهای A/B پیادهسازی کنند.
برای جزئیات، به بخش پیادهسازی HAL کنترل راهاندازی در اسناد AOSP مراجعه کنید. میتوانید از bootctl موجود در تصاویر SDV اشکالزدایی (eng و userdebug) برای آزمایش پیادهسازی استفاده کنید.
تولید بسته OTA
برای کسب اطلاعات بیشتر، به ساخت بستههای OTA مراجعه کنید. دستورالعملهای این صفحه با انحرافات جزئی از اسناد AOSP پیروی میکند.
بهروزرسانی کامل
از ریشه مخزن:
source build/envsetup.sh && lunch sdv_core_cf-aosp_current-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 باشد)،
بهروزرسانی در بازراهاندازی بعدی فعال خواهد شد.
نسخهبندی
برای بهروزرسانیهای سیستم، «خودروی نرمافزارمحور» از فراداده بسته OTA Android استفاده میکند تا تعیین کند که آیا بسته OTA الزامات را برآورده میکند و میتواند نصب شود یا نه.
همچنین برای APEX، خودروی نرمافزارمحور از مفاهیم Android درباره قابلیت بهروزرسانی پیروی میکند. بنابراین، وقتی APEX از نوع APEX راهانداز نباشد، میتوان آن را بهروز کرد. راهاندازی APEX باید ازطریق بهروزرسانیهای سیستم بهروز شود و:
- نسخه اعلامشده بالاتر از نسخه ازپیش نصبشده باشد، و هر دو بزرگتر یا مساوی ۱ باشند،
یا،
- نسخه اعلامشده APEX ازپیش نصبنشده است و نسخه آن بالاتر از نسخه موجود در فهرست رد است، اگر فهرست شده باشد.
SDV معمولاً در چندین سیستم در یک شبکه مستقر میشود. بنابراین، باید مطمئن شوید بهروزرسانیهای انجامشده در یک سیستم بهدرستی اجرا میشوند. بااینحال، این مراقبت تضمین نمیکند که همه سیستمها بتوانند بهدرستی ارتباط برقرار کنند.
بهروزرسانی کل شبکه نیز به همان اندازه مهم است، که مستلزم این است که بهروزرسانیهای بستههای سرویس یا بهطور همزمان در همه دستگاهها اعمال شوند یا بهروزرسانیها حاوی تغییرات مخرب نباشند. برای مثال، تغییرات ناسازگار در میانای برنامه.
اگرچه SDV ابزاری برای شناسایی تغییرات ناسازگار ارائه نمیدهد، رهنمودهای ما نحوه تطبیق تغییرات ایجادشده در میاناهای کاربری و همچنین روالهای مطلوب موردنیاز برای استقرار تغییرات را شرح میدهد.
علاوهبراین، SDV از سازوکارهای بازگشت به نسخه قبلی برای بهروزرسانیهای سیستم و APEX پشتیبانی میکند. اگر سیستم بهطور ناخواسته وارد وضعیت نامطلوبی شود، میتوانیم آخرین وضعیت مطلوب شناختهشده را بازیابی کنیم.