ซอฟต์แวร์ที่อัปเดตได้ของเอกสารนิยามความเข้ากันได้ (CDD) ของ Android กำหนดให้อุปกรณ์ต้องใช้คลาส SystemUpdatePolicy
SystemUpdatePolicy
ช่วยให้แอปเจ้าของอุปกรณ์ (DO) ควบคุมการติดตั้งการอัปเดตระบบได้ (หากมี)
แจ้งให้เจ้าของอุปกรณ์ทราบ
ไคลเอ็นต์การอัปเดตผ่านอากาศ (OTA) ต้องแจ้งให้แอปเจ้าของอุปกรณ์ทราบเกี่ยวกับการอัปเดต OTA ที่กำลังจะมาถึงโดยใช้ API ของระบบ ไคลเอ็นต์ OTA ยังต้องมีการบันทึกการประทับเวลาเมื่อการอัปเดต OTA พร้อมใช้งานเป็นครั้งแรกด้วย ไคลเอ็นต์ OTA จะโทรหา DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch)
เพื่อแจ้งเตือนแอปของเจ้าของอุปกรณ์ได้ หากไคลเอ็นต์ OTA ไม่ทราบว่าการอัปเดตเป็นแพตช์ความปลอดภัยหรือไม่ ไคลเอ็นต์ OTA อาจกลับไปใช้ DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)
ได้
หากการอัปเดตไม่พร้อมใช้งานในขณะนี้ ไคลเอ็นต์ OTA จะรายงานเรื่องนี้โดยการตั้งค่าอาร์กิวเมนต์ updateReceivedTime
เป็น -1
เราขอแนะนำให้ส่งการแจ้งเตือนทุกครั้งที่ไคลเอ็นต์ OTA ทำการสำรวจเซิร์ฟเวอร์ OTA หรือเมื่อมีการพุช OTA ไปยังไคลเอ็นต์ นอกจากนี้ คุณยังส่งการแจ้งเตือนได้บ่อยขึ้นด้วย
นโยบายการอัปเดตระบบ
Android 9 เพิ่มความสามารถในการควบคุมการอัปเดตให้แก่เจ้าของอุปกรณ์ด้วยการอนุญาตให้เลื่อนการอัปเดต OTA ได้สูงสุด 90 วัน ฟีเจอร์นี้มุ่งเน้นที่โซลูชันสำหรับอุปกรณ์เฉพาะ (ก่อนหน้านี้เรียกว่า COSU) ซึ่งช่วยให้เจ้าของสามารถหยุดเวอร์ชันระบบปฏิบัติการที่ทำงานในอุปกรณ์ไว้ชั่วคราวในช่วงเวลาที่สำคัญ เช่น ช่วงวันหยุด
ลูกค้า OTA ต้องใช้นโยบายด้านพฤติกรรมเพื่อปฏิบัติตาม CDD DO สามารถกำหนดนโยบายต่อไปนี้ ซึ่งระบบย่อยการอัปเดตระบบของอุปกรณ์ต้องปฏิบัติตาม
นอกจากนี้ เจ้าของอุปกรณ์ยังตั้งค่าช่วงหยุด (ใน Android 9 ขึ้นไป) ซึ่งจะหยุดเวอร์ชันระบบปฏิบัติการไว้ชั่วคราวได้ในช่วงที่มีเวลาจำกัด เช่น ช่วงวันหยุดหรือช่วงเวลาอื่นๆ ที่ยุ่ง ระบบจะไม่ติดตั้งการอัปเดต OTA ในช่วงหยุดทำงาน เราขอแนะนำให้ใช้ SystemUpdatePolicy.InstallationOption
(ดูส่วนต่อไปนี้) อย่างไรก็ตาม ไคลเอ็นต์ OTA ยังโทรหา SystemUpdatePolicy.getFreezePeriods()
เพื่อตรวจสอบว่าอุปกรณ์อยู่ในช่วงหยุดทำงานหรือไม่
ใช้ตัวเลือกการติดตั้ง
Android 9 เปิดตัว @SystemApi ซึ่งSystemUpdatePolicy.InstallationOption
ออกแบบมาสำหรับไคลเอ็นต์การอัปเดตระบบ
SystemUpdatePolicy.InstallationOption
ทำหน้าที่เป็นคลาส Wrapper สำหรับนโยบายและระยะเวลาหยุดทำงาน ตัวเลือกการติดตั้งจะบอกไคลเอ็นต์ถึงวิธีดำเนินการกับการอัปเดตระบบที่เข้ามาใหม่และระยะเวลาที่ถูกต้องสำหรับการดำเนินการดังกล่าว ตามนโยบายการอัปเดตระบบปัจจุบันหรือระยะเวลาหยุดทำงานที่อาจมีการตั้งค่าไว้ ตัวเลือกการติดตั้งอาจเป็นค่าใดค่าหนึ่งต่อไปนี้
-
TYPE_INSTALL_AUTOMATIC
- ระบบจะติดตั้งการอัปเดตที่เข้ามาทันทีโดยไม่ต้องให้ผู้ใช้ดำเนินการใดๆ ทันทีที่การอัปเดตพร้อมใช้งาน อุปกรณ์จะรีบูตโดยอัตโนมัติ -
TYPE_POSTPONE
- คุณเลื่อนการอัปเดตระบบที่กำลังจะมาถึงได้สูงสุด 30 วัน ผู้ใช้จะติดตั้งการอัปเดตด้วยตนเองไม่ได้ ผู้ผลิตอุปกรณ์สามารถเลือกได้ว่าจะบล็อกแพตช์ความปลอดภัยหรือไม่ -
TYPE_PAUSE
- การอัปเดตระบบที่เข้ามาใหม่อาจล่าช้าไปอย่างไม่มีกำหนดจนกว่าจะมีประกาศเพิ่มเติม ผู้ใช้จะติดตั้งการอัปเดตด้วยตนเองไม่ได้TYPE_PAUSE
เลื่อนการอัปเดตทั้งหมด รวมถึงแพตช์ความปลอดภัย
ไคลเอ็นต์การอัปเดตระบบสามารถค้นหา SystemUpdatePolicy.InstallationOption
โดยใช้ SystemUpdatePolicy.getInstallationOptionAt(long when)
โดยที่ when แสดงถึงเวลาที่ระบบค้นหาตัวเลือกการติดตั้งเป็นจำนวนมิลลิวินาทีนับจาก Epoch เมื่อใช้วิธี SystemUpdatePolicy.getInstallationOptionAt(long when)
โปรแกรมอัปเดตระบบจะดำเนินการกับตัวเลือกที่แสดงจนกว่าจะหมดเวลา หลังจากตัวเลือกที่แสดงผลหมดอายุแล้ว ไคลเอ็นต์จะทำการค้นหาอีกครั้งได้โดยใช้การประทับเวลาใหม่เพื่อดูตัวเลือกล่าสุด
โปรแกรมรับส่งข้อมูลการอัปเดตระบบต้องฟังการออกอากาศในกรณีที่มีการอัปเดตนโยบายทั้งหมดDevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED
ตรวจสอบนโยบาย TYPE_PAUSE
คุณอาจตรวจสอบด้วยตนเองว่าตัวเลือก TYPE_PAUSE
ทํางานในระบบ OTA ได้
นโยบาย TYPE_PAUSE มีผล
วิธีตรวจสอบว่านโยบาย TYPE_PAUSE
ใช้งานได้
-
ตั้งค่านโยบายอัตโนมัติและระบุ
TYPE_PAUSE
- ขณะที่นาฬิการะบบอยู่ในระยะเวลาหยุดชั่วคราว ให้พุชการอัปเดต OTA
- ตรวจสอบว่าอุปกรณ์ไม่ได้ใช้การอัปเดต OTA และผู้ใช้ไม่สามารถติดตั้งการอัปเดตด้วยตนเองได้
- หากเป็นอุปกรณ์ A/B ให้รีบูตอุปกรณ์และตรวจสอบว่ารีบูตไม่ได้ทริกเกอร์การติดตั้งการอัปเดตอัตโนมัติ
นโยบาย TYPE_PAUSE หมดอายุแล้ว
วิธีตรวจสอบว่านโยบาย TYPE_PAUSE
ที่หมดอายุแล้วใช้งานได้
-
ตั้งค่านโยบายอัตโนมัติและระบุ
TYPE_PAUSE
- ขณะที่นาฬิการะบบอยู่ในระยะเวลาหยุดชั่วคราว ให้พุชการอัปเดต OTA
- รอให้ระยะเวลาหยุดชั่วคราวหมดอายุ
- ตรวจสอบว่าอุปกรณ์รีบูตโดยอัตโนมัติและมีการอัปเดต OTA หลังจากรีบูต