Android 11 เพิ่ม HAL ใหม่ IDumpstateDevice (เวอร์ชัน 1.1) HAL นี้เปิดเผยวิธีการใหม่เพื่อกำหนดขอบเขตบันทึกของผู้จำหน่ายให้เข้มงวดยิ่งขึ้นซึ่งรวมอยู่ในรายงานข้อบกพร่องมาตรฐาน รวมถึงการอนุญาตให้บิลด์ผู้ใช้เปิดและปิดการบันทึกของผู้จำหน่าย (ค่าเริ่มต้นสำหรับบิลด์ผู้ใช้คือปิด) สิ่งนี้ทำให้ OEM สามารถควบคุมสิ่งที่รวมอยู่ในรายงานข้อบกพร่องประเภทใดประเภทหนึ่งได้มากขึ้น
คุณลักษณะนี้จะส่งผลกระทบต่อ OEM หากพวกเขาเลือกที่จะใช้ HAL เสริมนี้ SoC อาจได้รับผลกระทบ ขึ้นอยู่กับสิ่งที่ OEM เลือกที่จะเปิดเผยกับ HAL นี้ คาดว่าผู้ให้บริการจะไม่ได้รับผลกระทบใดๆ
สิ่งที่คุณรวมไว้ในรายงานข้อบกพร่องนั้นขึ้นอยู่กับข้อมูลที่คุณพบว่าเกี่ยวข้องกับการแก้ไขข้อบกพร่อง แต่โดยทั่วไปแล้วมีรายละเอียดมากกว่าจะดีกว่า
ตัวอย่างและที่มา
มีการใช้งานเริ่มต้นของ IDumpstateDevice เวอร์ชัน (เลิกใช้แล้ว) 1.0 ที่แสดงตัวอย่างการใช้ไลบรารี dumpstate util: frameworks/native/cmds/dumpstate/DumpstateUtil.h
นอกจากนี้ยังมีการใช้งาน Cuttlefish ของ 1.1 HAL: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*
ซอร์สโค้ดอยู่ที่นี่:
- ไฟล์ HAL อยู่ภายใต้
hardware/interfaces/dumpstate/1.1/
- โค้ดเนทิฟ dumpstate ที่ควบคุมเนื้อหารายงานข้อบกพร่องอยู่ภายใต้
frameworks/native/cmds/dumpstate/
การนำไปปฏิบัติ
หากต้องการใช้ HAL นี้ ให้ใช้อินเทอร์เฟซ android.hardware.dumpstate@1.1::IDumpstateDevice
HAL มีค่า DumpstateMode
ที่เป็นไปได้หลายค่า แต่ไม่ใช่ทั้งหมดที่จะได้รับการสนับสนุนโดยอุปกรณ์เดียว (เช่น WEAR สำหรับอุปกรณ์ระบบปฏิบัติการที่ไม่ใช่ Wear)
การใช้ dumpstate HAL เป็นทางเลือก อุปกรณ์ใหม่ทั้งหมดที่เปิดตัวด้วย Android 11 ต้องใช้ IDumpstateDevice 1.1 หากอุปกรณ์เหล่านั้นใช้ Dumpstate HAL อุปกรณ์ที่ใช้ IDumpstateDevice 1.0 ก่อน Android 11 ควรอัปเกรดเป็น 1.1 ได้ง่าย และขอแนะนำเป็นอย่างยิ่ง เนื่องจากจะช่วยลดปริมาณข้อมูลส่วนตัวที่ไม่เกี่ยวข้องที่รวมอยู่ในรายงานข้อบกพร่องได้อย่างมาก
คุณลักษณะนี้ขึ้นอยู่กับการเปลี่ยนแปลงดัมพ์สเตตหลักที่มาพร้อมกับ Android 11 ซึ่งอยู่ภายใต้ frameworks/native/cmds/dumpstate
การใช้ HAL นี้มีแนวโน้มที่จะต้องมีการเปลี่ยนแปลง SEPolicy บางอย่างกับคุณสมบัติของระบบ ไฟล์ ฯลฯ เพื่อให้สิ่งต่าง ๆ ทำงานได้อย่างสมบูรณ์ และจะต้องได้รับการประสานงานกับผู้จำหน่ายเพื่อถ่ายโอนข้อมูลที่เกี่ยวข้องทั้งหมดลงในรายงานข้อบกพร่อง
การปรับแต่ง
ผู้ใช้อุปกรณ์สามารถสลับเปิดหรือปิดการเข้าสู่ระบบของผู้ขายได้โดยใช้การตั้งค่าของนักพัฒนา เมื่อปิดแล้ว dumpstateBoard_1_1
อาจยังคงแสดงข้อมูลสำคัญขั้นต่ำตามที่ OEM กำหนด การปิดการบันทึกของผู้ขายจะทำให้ IDumpstateDevice::dumpstateBoard
เพิ่มเฉพาะข้อมูลที่จำเป็นลงในรายงานจุดบกพร่อง ในขณะที่การเปิดใช้งานจะรวมข้อมูลใดก็ตามที่ OEM เลือก
คุณสามารถแก้ไข dumpstate.cpp
(ซึ่งเรียกเมธอด IDumpstateDevice HAL) ได้ เช่น เพื่อเพิ่มการหมดเวลาที่กำหนดสำหรับ dumpstateBoard
ให้เสร็จสมบูรณ์ อย่างไรก็ตาม ตรรกะหลักของ dumpstate.cpp
ควรยังคงไม่เปลี่ยนแปลง
การหมดเวลาอาจเป็นค่าใดก็ได้ แต่ไม่ควรเพิ่มเวลาที่รายงานข้อบกพร่องใช้ในการดำเนินการให้เสร็จสิ้นมากนัก โดยเฉพาะอย่างยิ่ง DumpstateMode::CONNECTIVITY
มีความไวต่อเวลาอย่างมาก และจำเป็นต้องทำงานให้เร็วที่สุดเพื่อรวบรวมบันทึกโมเด็ม/Wi-Fi/เครือข่ายที่เกี่ยวข้องทั้งหมด
การตรวจสอบ
มีการทดสอบ VTS สำหรับการใช้งาน IDumpstateDevice และมีการทดสอบหน่วยการทำงานสำหรับฟังก์ชัน BugreportManager
ทั่วไป
กรณีทดสอบด้วยตนเองที่แนะนำคือ frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java