SDV เป็นไปตามแนวทางมาตรฐานของ Android ในการอัปเดตระบบแบบ A/B (ราบรื่น) เอกสารประกอบของ AOSP ใช้กับ SDV เป็นหลัก หน้านี้แสดงรายละเอียดการใช้งานเฉพาะสำหรับ SDV และเส้นทางที่เหมาะสมที่ทราบสำหรับการสร้างและใช้แพ็กเกจอัปเดต
SDV ได้รับการกำหนดค่าให้ใช้การอัปเดต A/B ที่ไม่ใช่แบบเสมือน หากต้องการกำหนดค่าและทริกเกอร์การอัปเดต A/B สำหรับพาร์ติชัน /oem_ab ที่กำหนดเองจากแพ็กเกจบริการ โปรดดูการอัปเดตพาร์ติชัน AB ของ OEM
ติดตั้งใช้งาน 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-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 แพ็กเกจนี้ไม่ได้สร้างขึ้นเป็นส่วนหนึ่งของ m dist ซึ่งต่างจากใน AOSP
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 เป็นไปตามข้อกำหนดและติดตั้งได้หรือไม่
นอกจากนี้ SDV ยังเป็นไปตามแนวคิดของ Android เกี่ยวกับความสามารถในการอัปเดตสำหรับ APEX ด้วย ดังนั้น APEX จึงอัปเดตได้เมื่อ APEX ไม่ใช่ APEX บูตสแตรป ต้องอัปเดต APEX บูตสแตรปผ่านการอัปเดตระบบ และทำอย่างใดอย่างหนึ่งต่อไปนี้
- version ที่ประกาศสูงกว่าเวอร์ชันที่ติดตั้งล่วงหน้า และทั้ง 2 เวอร์ชันมีค่ามากกว่าหรือเท่ากับ 1
หรือ
- เวอร์ชันที่ประกาศเป็น APEX ที่ไม่ได้ติดตั้งไว้ล่วงหน้า และเวอร์ชันสูงกว่าเวอร์ชันในรายการที่ปฏิเสธ (หากมี)
โดยปกติแล้ว SDV จะติดตั้งใช้งานในหลายระบบในเครือข่าย ดังนั้น คุณต้องตรวจสอบว่าการอัปเดตที่ทำในระบบเดียวได้รับการดำเนินการอย่างถูกต้อง อย่างไรก็ตาม การดูแลนี้ไม่ได้รับประกันว่าระบบทั้งหมดจะสื่อสารกันได้อย่างถูกต้อง
การอัปเดตเครือข่ายโดยรวมก็มีความสำคัญไม่แพ้กัน ซึ่งกำหนดให้การอัปเดตแพ็กเกจบริการต้องติดตั้งใช้งานในเครื่องทั้งหมดพร้อมกัน หรือการอัปเดตต้องไม่มีการเปลี่ยนแปลงที่ส่งผลกับส่วนอื่นในระบบ เช่น การเปลี่ยนแปลงอินเทอร์เฟซที่ไม่เข้ากัน
แม้ว่า SDV จะไม่มีเครื่องมือในการตรวจหาการเปลี่ยนแปลงที่เข้ากันไม่ได้ แต่หลักเกณฑ์ของเราจะอธิบายวิธีปรับการเปลี่ยนแปลงที่ทำกับอินเทอร์เฟซ รวมถึงแนวทางปฏิบัติแนะนำที่จำเป็นในการทำให้การเปลี่ยนแปลงมีผล
นอกจากนี้ SDV ยังรองรับกลไกการย้อนกลับสำหรับการอัปเดตระบบและ APEX ด้วย หากระบบเข้าสู่สถานะที่ไม่น่าพอใจโดยไม่ได้ตั้งใจ เราสามารถกู้คืนสถานะที่น่าพอใจล่าสุดที่ทราบได้