การอัปเดตระบบ A/B

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 ด้วย หากระบบเข้าสู่สถานะที่ไม่น่าพอใจโดยไม่ได้ตั้งใจ เราสามารถกู้คืนสถานะที่น่าพอใจล่าสุดที่ทราบได้