SDV ใช้แนวทางมาตรฐานของ Android ในการอัปเดตระบบแบบ A/B (ราบรื่น) เอกสารประกอบ AOSP ใช้กับ SDV เป็นหลัก หน้านี้แสดงรายละเอียดการใช้งาน เฉพาะสำหรับ SDV และเส้นทางที่ทราบว่าดีสำหรับการสร้างและใช้แพ็กเกจการอัปเดต
ปัจจุบัน SDV ได้รับการกำหนดค่าให้ใช้การอัปเดต A/B ที่ไม่ใช่เสมือน
ใช้ HAL ของการควบคุมการบูต
อิมเมจ SDV Core สำหรับ Cuttlefish (sdv_core_cf) มีการใช้งานมาตรฐานของ HAL ของการควบคุมการบูตตาม hardware/interfaces/boot/aidl/default/ Bootloader อื่นๆ ต้องใช้ HAL เพื่อรองรับการอัปเดต A/B
ดูรายละเอียดได้ที่ส่วนใช้ 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 bootstrap โดย APEX Bootstrap ต้องอัปเดตผ่านการอัปเดตระบบ และต้องเป็นไปตามข้อใดข้อหนึ่งต่อไปนี้
- เวอร์ชันที่ประกาศสูงกว่าเวอร์ชันที่ติดตั้งไว้ล่วงหน้า และ ทั้ง 2 เวอร์ชันมีค่ามากกว่าหรือเท่ากับ 1
หรือ
- เวอร์ชันที่ประกาศเป็น APEX ที่ไม่ได้ติดตั้งไว้ล่วงหน้าและเวอร์ชันสูงกว่าเวอร์ชันในรายการที่ไม่อนุญาต (หากมี)
โดยปกติแล้ว SDV จะได้รับการติดตั้งใช้งานในหลายระบบในเครือข่าย ดังนั้น คุณต้อง ตรวจสอบว่าการอัปเดตที่ทำกับระบบเดียวดำเนินการอย่างถูกต้อง อย่างไรก็ตาม การดูแลนี้ไม่ได้เป็นการรับประกันว่าระบบทั้งหมดจะสื่อสารกันได้อย่างถูกต้อง
นอกจากนี้ คุณยังต้องอัปเดตเครือข่ายโดยรวมด้วย ซึ่งต้องมีการอัปเดตแพ็กเกจบริการที่ปรับใช้กับเครื่องทั้งหมดพร้อมกัน หรือการอัปเดตต้องไม่มีการเปลี่ยนแปลงที่ทำให้เกิดข้อขัดข้อง เช่น การเปลี่ยนแปลงอินเทอร์เฟซที่ไม่เข้ากัน
แม้ว่า SDV จะไม่มีเครื่องมือในการตรวจหาการเปลี่ยนแปลงที่ไม่เข้ากัน แต่หลักเกณฑ์ของเราจะอธิบายวิธีปรับการเปลี่ยนแปลงที่ทำกับอินเทอร์เฟซ รวมถึงแนวทางปฏิบัติแนะนำที่จำเป็นในการติดตั้งใช้งานการเปลี่ยนแปลง
นอกจากนี้ SDV ยังรองรับกลไกการย้อนกลับสำหรับการอัปเดตระบบและ APEX ด้วย หากระบบเข้าสู่สถานะที่ไม่น่าพอใจโดยไม่ได้ตั้งใจ เราสามารถกู้คืนสถานะที่น่าพอใจล่าสุดที่ทราบได้