กู้ภัยพรรค

ผู้ใช้จำนวนมากต้องพึ่งพาโทรศัพท์เป็นอย่างมากและต้องการอุปกรณ์ที่ใช้งานได้ตลอดเวลา อย่างไรก็ตาม บางครั้งอุปกรณ์จะจบลงด้วยลูปการรีบูต ซึ่งทำให้ผู้ใช้ยื่นตั๋วสนับสนุนหรือสอบถามเกี่ยวกับการรับประกัน กระบวนการนี้สร้างความหงุดหงิดให้กับผู้ใช้และมีราคาแพงสำหรับผู้ผลิตอุปกรณ์และผู้ให้บริการ

Android 8.0 มีฟีเจอร์ที่จะส่ง "กลุ่มช่วยเหลือ" เมื่อสังเกตเห็นส่วนประกอบของระบบหลักติดอยู่ในลูปที่ขัดข้อง จากนั้น Rescue Party จะบานปลายผ่านชุดการดำเนินการเพื่อกู้คืนอุปกรณ์ ทางเลือกสุดท้าย Rescue Party จะรีบูตอุปกรณ์เข้าสู่โหมดการกู้คืนและแจ้งให้ผู้ใช้ทำการรีเซ็ตเป็นค่าจากโรงงาน

คุณสมบัติการช่วยเหลือเหล่านี้ไม่จำเป็นใน เอกสารคำจำกัดความความเข้ากันได้ของ Android แต่อาจยังมีประโยชน์ในการลดกรณีการสนับสนุน

การนำไปปฏิบัติ

Rescue Party เปิดใช้งานตามค่าเริ่มต้นใน Android 8.0 และการใช้งานอยู่ใน /services/core/java/com/android/server/RescueParty.java Rescue Party จะได้รับข้อมูลเกี่ยวกับเหตุการณ์การบู๊ตและแครช และเริ่มทำงานหาก:

  • system_server รีสตาร์ทมากกว่า 5 ครั้งใน 5 นาที
  • แอประบบถาวรขัดข้องมากกว่า 5 ครั้งใน 30 วินาที

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

ไม่จำเป็นต้องมีการสนับสนุนฮาร์ดแวร์พิเศษเพื่อสนับสนุน Rescue Party หากนำไปใช้ ระบบการกู้คืนของอุปกรณ์จะต้องตอบสนองต่อคำสั่ง --prompt_and_wipe_data และอุปกรณ์จะต้องแสดงวิธีให้ผู้ใช้ยืนยันการทำลายข้อมูลผู้ใช้ก่อนที่จะดำเนินการต่อ ระบบการกู้คืนควรให้ทางเลือกแก่ผู้ใช้ในการพยายามบู๊ตอุปกรณ์อีกครั้ง

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

การตรวจสอบ

กิจกรรมช่วยเหลือทั้งหมดจะถูกระงับเมื่ออุปกรณ์มีการเชื่อมต่อข้อมูล USB ที่ใช้งานอยู่ เนื่องจากนั่นเป็นสัญญาณที่แรงว่ามีคนกำลังแก้ไขจุดบกพร่องของอุปกรณ์

หากต้องการแทนที่การระงับนี้ ให้รัน:

adb shell setprop persist.sys.enable_rescue 1

จากนั้น คุณสามารถทริกเกอร์ระบบหรือ UI ข้อขัดข้องได้

หากต้องการทริกเกอร์ system_server Crash Loop ระดับต่ำ ให้รัน:

adb shell setprop debug.crash_system 1

หากต้องการทริกเกอร์ SystemUI Crash Loop ระดับกลาง ให้รัน:

adb shell setprop debug.crash_sysui 1

แครชลูปทั้งสองจะเริ่มต้นตรรกะการช่วยเหลือ การดำเนินการช่วยเหลือทั้งหมดยังถูกบันทึกลงในบันทึก PackageManager แบบถาวรที่เก็บไว้ที่ /data/system/uiderrors.txt สำหรับการตรวจสอบและการดีบักในภายหลัง บันทึกถาวรเหล่านี้ยังรวมอยู่ในรายงานข้อบกพร่องทุกรายการภายใต้ส่วน "ข้อความเตือนแพ็คเกจ"