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