การอัปเดต OTA

Glass Enterprise ไม่มาพร้อมกับตัวเครื่อง แต่ได้รับการอัปเดตผ่านอากาศ (OTA) แต่คุณสามารถกําหนดค่าการอัปเดต OTA พื้นฐานได้ ฟังก์ชันการอัปเดต OTA ของ EE2 ช่วยให้เจ้าของอุปกรณ์สามารถควบคุมการอัปเดตผ่านอากาศ (OTA) ได้อย่างสมบูรณ์ดังนี้

  • เพื่อควบคุมตําแหน่งที่เก็บข้อมูลอัปเดต
  • เพื่อควบคุมเวลาการอัปเดต
  • เพื่อควบคุมสิ่งที่จะกําหนดเป้าหมายของการอัปเดต

การกำหนดค่า

คุณต้องใช้การกําหนดค่าฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์เพื่อให้อัปเดต OTA ในอุปกรณ์ EE2 ได้

การกําหนดค่าฝั่งเซิร์ฟเวอร์

คุณต้องฝากไฟล์อัปเดต OTA เพื่อดาวน์โหลดไฟล์ในเซิร์ฟเวอร์ที่เข้าถึงได้ในเครือข่าย ไฟล์อัปเดตควรดาวน์โหลดจากหน้าอิมเมจระบบ

คุณยังต้องโฮสต์ไฟล์ JSON ซึ่งช่วยกระตุ้นกระบวนการอัปเดตอีกด้วย โดยต้องอยู่ในรูปแบบ ตัวอย่าง updater example.json ไฟล์นี้จะมีข้อมูล เช่น ขนาดเพย์โหลด ความยาวไบนารี และข้อมูลเมตาอื่นๆ ที่เครื่องมือการอัปเดตจําเป็นต้องใช้เพื่อยอมรับไบนารี OTA

การกําหนดค่าฝั่งไคลเอ็นต์

คุณต้องตั้งค่า URL และช่วงแบบสํารวจของ OTA เพื่อให้อุปกรณ์ตรวจหาอัปเดต OTA ได้ คุณสามารถใช้ Intent เพื่อเริ่มกิจกรรมการตั้งค่าได้ ชื่อกิจกรรมคือ com.google.android.glass.otaservice/.OtaSettingsActivity

รองรับการทํางาน 2 แบบดังนี้

  • com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION
    • URL ของไฟล์ข้อมูลเมตา JSON ที่ Daemon ทําการสํารวจและตรวจสอบ
    • ต่อท้ายสตริงด้วยคีย์ต่อไปนี้: com.google.android.glass.otaservice.UPDATE_LOCATION
  • com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION
    • ช่วงเวลาที่ OTA daemon ปลุกระบบไปยังแบบสํารวจในหน่วยมิลลิวินาที
    • ต่อท้ายตัวเลขด้วยคีย์ต่อไปนี้ com.google.android.glass.otaservice.UPDATE_FREQUENCY
    • Intent นี้ยังเริ่มการตรวจสอบ OTA ทันทีหากยังไม่ได้ดําเนินการ
    • ต้องมีตัวเลขที่มากกว่า 900,000 มิลลิวินาที
    • หากมี OTA อยู่แล้ว ระบบจะอัปเดตช่วงความถี่หลังจากทําการตรวจสอบปัจจุบันเรียบร้อยแล้ว ต้องระบุ มิฉะนั้น Android Doze อาจรบกวนบริการ

startActivityForResult จะส่งความตั้งใจได้ การตอบกลับจะถูกส่งกลับไปยังโค้ดเรียกกลับ onActivityResult ที่มี RESULT_OK สําเร็จ หรือ RESULT_CANCELLED ล้มเหลว จากนั้นระบบจะย้ายข้อความไปยังบันทึกของอุปกรณ์เพื่อการแก้ปัญหา

นอกจากนี้ จะส่งคําสั่ง Intent ด้วย adb ด้วย ดังนี้

adb shell am start \
-a com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION \
--es com.google.android.glass.otaservice.UPDATE_LOCATION "some_URL_for_json_file" \
-n com.google.android.glass.otaservice/.OtaSettingsActivity
adb shell am start \
-a com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION \
--el com.google.android.glass.otaservice.UPDATE_FREQUENCY 1800000 \
-n com.google.android.glass.otaservice/.OtaSettingsActivity

Daemon ของ OTA จะทํางานเป็น JobService ทุก 15 นาทีขึ้นไป โดยขึ้นอยู่กับการตั้งค่าความถี่ JobService จะทํางานเมื่อบูตและทํางานต่อไปจนกว่าจะยอมรับและยืนยันเพย์โหลดที่อัปเดต

บริการพื้นหลังจะโพลเฉพาะเมื่อ Wi-Fi ออนไลน์และเชื่อมต่ออยู่เท่านั้น แต่ Wi-Fi ไม่จําเป็นต้องเชื่อมต่ออินเทอร์เน็ต แต่มีเพียง LAN

การประมวลผลทั้งหมดจะเกิดขึ้นในเบื้องหลัง ไม่จําเป็นต้องป้อนข้อมูลของผู้ใช้ในระหว่างการประมวลผล การแจ้งเตือนจะแสดงในลิ้นชักการแจ้งเตือน และระบบปฏิบัติการจะได้รับการอัปเดตโดยอัตโนมัติเมื่อมีการรีบูตครั้งถัดไป

อัปเดตขั้นตอน

ทําตามขั้นตอนต่อไปนี้เพื่อทดสอบการอัปเดต OTA

  1. ดาวน์โหลดและแฟลชอุปกรณ์ด้วยตนเองโดยใช้การอัปเดตปัจจุบัน
  2. การ์ดข้อมูลการตั้งค่าอุปกรณ์ Glass ควรแสดงการอัปเดตปัจจุบัน
  3. เชื่อมต่อเครือข่าย Wi-Fi
  4. เรียกใช้คําสั่ง adb ให้ชี้ไปยังไฟล์ json เพื่ออัปเดตเป็นการอัปเดตครั้งถัดไป

    adb shell am start \
    -a com.google.android.glass.otaservice.UPDATE_LOCATION_ACTION \
    --es com.google.android.glass.otaservice.UPDATE_LOCATION "your_json_file_location" \
    -n com.google.android.glass.otaservice/.OtaSettingsActivity
    adb shell am start \
    -a com.google.android.glass.otaservice.UPDATE_FREQUENCY_ACTION \
    --el com.google.android.glass.otaservice.UPDATE_FREQUENCY 900000 \
    -n com.google.android.glass.otaservice/.OtaSettingsActivity
  5. การแจ้งเตือนเกี่ยวกับ OTA จะปรากฏขึ้น
  6. การแจ้งเตือน OTA หายไป
  7. ในการบูตอุปกรณ์ด้วยตนเองในครั้งถัดไป อุปกรณ์ควรได้รับการอัปเดต และการ์ดข้อมูลอุปกรณ์การตั้งค่า Glass ควรแสดงการอัปเดตใหม่

อัปเดตโฟลว์

กระบวนการมาตรฐานที่ใช้การอัปเดต OTA มีดังนี้

  1. เมื่อรีบูต OTA จะแสดงกําหนดการของการดําเนินการแรก ซึ่งกําหนดตามช่วงเวลาที่ระบุ หากไม่ได้กําหนดช่วงเวลาไว้เลย ค่าเริ่มต้นจะเป็น 15 นาที
  2. Daemon ทําการสํารวจเว็บเซิร์ฟเวอร์เพื่อดาวน์โหลดไฟล์ข้อมูลเมตา หากไม่ได้ระบุ URL ไว้ Daemon จะออกและรอจนถึงช่วงเวลาการดําเนินการถัดไป
  3. Daemon ทําการตรวจสอบเบื้องต้นในไฟล์ข้อมูลเมตาเพื่อให้แน่ใจว่ามีการตั้งค่าแฟล็กที่ถูกต้อง หากมีข้อผิดพลาด Daemon จะออกและพิมพ์เอาต์พุตไปยังบันทึก และปีศาจจะรอจนกว่าจะมีการดําเนินการตามกําหนดการครั้งถัดไป
  4. Daemon จะเปรียบเทียบรายการในไฟล์ JSON กับรายการที่ดึงมาจากบิลด์ปัจจุบันที่กําลังทํางานในอุปกรณ์ หากระบบตรวจพบข้อมูลไม่ตรงกันในรายการเหล่านี้ ระบบจะเริ่มดาวน์โหลด OTA เนื้อหาจากไฟล์ข้อมูลเมตาจะส่งไปยังเครื่องมืออัปเดต AOSP

    หยุดการอัปเดตชั่วคราวไม่ได้ และจะเป็นเช่นนี้จนกว่าจะประสบความสําเร็จ ไม่สําเร็จ หรือหมดเวลา

  5. Daemon ดาวน์โหลดแพ็กเกจ OTA อยู่เบื้องหลังโดยอัตโนมัติ
  6. หากดาวน์โหลดแพ็กเกจ OTA แล้วและยืนยันสําเร็จ อุปกรณ์ Daemon จะหยุดแบบสํารวจสําหรับการอัปเดตใหม่ เมื่อรีบูต การอัปเดตจะมีผลจริงๆ การแจ้งเตือนจะปรากฏขึ้นเพื่อแจ้งให้ผู้ใช้ทราบว่าการอัปเดตจะมีผลเมื่อรีบูตครั้งถัดไป
  7. หากการดาวน์โหลด OTA ล้มเหลว Daemon จะสํารวจเว็บเซิร์ฟเวอร์หลังจากระยะเวลาที่ระบุอีกครั้ง

การอัปเดตแอปพลิเคชัน

การอัปเดตแอปพลิเคชันใน EE2 ควรเป็นการอัปเดต Android แบบมาตรฐาน โดยมี 2 ตัวเลือกหลักๆ ดังนี้

  1. ใช้โซลูชัน MDM หรือสร้างแอปพลิเคชันเจ้าของอุปกรณ์ของคุณเองและอัปเดตแอปพลิเคชันโดยไม่ต้องแจ้ง โดยคุณใช้ API ของ PackageInstaller ของ Android API ได้
  2. ใช้ Android API PackageInstaller จากแอปพลิเคชันโดยตรงเพื่อให้อัปเดตตัวเอง กล่องโต้ตอบของระบบจะปรากฏในกรณีนี้