อุปกรณ์ที่เปิดตัวด้วย Android 12 โดยใช้เคอร์เนล
คุณต้องส่งเวอร์ชันที่สูงกว่า v5.4 ไปพร้อมกับเคอร์เนล GKI ดังนั้น
พาร์ทเนอร์สามารถเข้าถึง DebugFS
ในบิลด์การแก้ไขข้อบกพร่องของผู้ใช้ขณะพัฒนาใน GKI
เคอร์เนล การกำหนดค่าเคอร์เนล CONFIG_DEBUG_FS
จะเปิดใช้ใน defconfig ของ GKI
ไม่ต้องต่อเชื่อม DebugFS
ในบิลด์ผู้ใช้สำหรับอุปกรณ์
เปิดตัวใน Android 12
บิลด์การแก้ไขข้อบกพร่องของผู้ใช้มีการครอบคลุมการทดสอบที่ดีกว่าบิลด์ของผู้ใช้และ
ตลอดวงจรการพัฒนา แผนต่อไปนี้จะลดขนาด
ความแตกต่างระหว่างบิลด์ 2 ประเภทตามสิทธิ์เข้าถึง DebugFS
และ
มีประโยชน์ดังต่อไปนี้
- ป้องกันไม่ให้บิลด์ Userdebug อ้างอิง
DebugFS
โดยไม่ได้ตั้งใจ สำหรับฟังก์ชันใหม่ - ตรวจสอบว่าฟังก์ชันการทำงานที่มีอยู่ซึ่งเสียหายเนื่องจากไม่มี DebugFS เป็นที่รู้จักในช่วงต้นของวงจรการพัฒนา
การเข้าถึง Debugfs ในบิลด์ userdebug จะจัดอยู่ในหมวดหมู่ ดังต่อไปนี้:
- การเริ่มต้นไฟล์
DebugFS
ระหว่างการเปิดเครื่องอุปกรณ์ เช่น สิทธิ์เขียนไฟล์ในDebugFS
เพื่อเปิดการเก็บรวบรวมข้อมูลการแก้ไขข้อบกพร่อง - การสร้างรายงานข้อบกพร่อง: Dumpstate HAL อ่าน
DebugFS
ไฟล์เมื่อdumpstate
เรียกใช้DumpstateBoard()
ช่วงเวลานี้ ก็กลายเป็นส่วนหนึ่งของรายงานข้อบกพร่องแล้ว - การทดสอบและการตรวจสอบเฉพาะอุปกรณ์
ตารางต่อไปนี้จะอธิบายว่าแต่ละหมวดหมู่ทั้ง 3 หมวดหมู่นี้
ที่รองรับใน Android 12 โปรดทราบว่า
การติดตามต่อไปนี้จะใช้กับบิลด์ Userdebug เท่านั้นเนื่องจากใช้ DebugFS
ไม่ได้
ที่ติดตั้งในบิลด์ผู้ใช้
กรณีการใช้งาน | บิลด์การแก้ไขข้อบกพร่องของผู้ใช้ Android 12 |
---|---|
การเริ่มต้นไฟล์ DebugFS แบบครั้งเดียว ระหว่างเริ่มต้น
การเข้าถึงนี้จะเกิดขึ้นเพียงครั้งเดียวในช่วงเปิดเครื่อง
|
Dumpstate HAL จะดำเนินการนี้ในระหว่างการเริ่มต้น HAL หากต้องการเปิดใช้เช่นเดียวกัน
init จะต่อเชื่อม DebugFS ในบิลด์ userdebug ก่อนที่ HAL จะเริ่มต้น
Init จะโทรหา umount() ในวันที่ DebugFS เมื่อ
อุปกรณ์บูตเสร็จแล้ว
|
การสร้าง Bugreport: Dumpstate HAL อ่าน
DebugFS ซึ่งเป็นส่วนหนึ่งของรายงานข้อบกพร่อง
|
ดำเนินการโดย Dumpstate HAL ภายใน DumpstateBoard() เมื่อ Dumpstate เรียกใช้
(DumpstateDevice.cpp)
ซึ่งเครื่องมือ Dumpstate (เป็นส่วนหนึ่งของเฟรมเวิร์ก Android) ช่วยให้มั่นใจได้ว่า DebugFS
ในระหว่างการเรียกใช้
|
การทดสอบและการตรวจสอบเฉพาะอุปกรณ์ | รูทและเชลล์ของ adb ต่อเชื่อม DebugFS จากเชลล์ adb ด้วย
การเข้าถึงรูท1
|
1หากต้องการต่อเชื่อม DebugFS
จาก adb shell
ด้วย
ให้เข้าถึงรูท ใช้คำสั่งนี้
adb shell mount -t debugfs debugfs /sys/kernel/debug
การดำเนินการที่จำเป็นของพาร์ทเนอร์
พาร์ทเนอร์ต้องดำเนินการต่อไปนี้ โดยอิงตามการเปลี่ยนแปลงเหล่านี้ใน อุปกรณ์ Android 12:
- ทำให้การเริ่มต้นเวลาเริ่มต้นทั้งหมดของโหนด
DebugFS
เกิดขึ้น ระหว่างการเริ่มต้น HAL ของ Dumpstate ดูตัวอย่างวิธีการได้ที่ DNM: ตัวอย่างการเริ่มต้นเวลาเปิดเครื่องของไฟล์DebugFS
- ไม่อนุญาตให้
DebugFS
เข้าถึงระหว่างรันไทม์ ข้อยกเว้นต่อไปนี้ เช่น- การสร้างรายงานข้อบกพร่อง (มาจาก Dumpstate HAL)
- การทดสอบและการตรวจสอบ (เข้าถึงได้โดย
adb root
และshell
- ตรวจสอบว่าได้ต่อเชื่อม DebugFS ก่อนแล้ว)
นักพัฒนาซอฟต์แวร์สามารถตั้งค่าพร็อพเพอร์ตี้การแก้ไขข้อบกพร่องถาวร
persist.dbg.keep_debugfs_mounted
เพื่อต่อเชื่อมDebugFs
เพื่อต่อเชื่อม
การรีบูตเมื่อมีการแก้ไขข้อบกพร่องของผู้ใช้และบิลด์ทางวิศวกรรม
การทดสอบการปฏิบัติตามข้อกำหนดของ GTS ช่วยรับรองว่าระบบไฟล์ DebugFS
ไม่
ที่ติดตั้งในบิลด์ผู้ใช้ คำสั่ง neverallow
ของ Sepolicy ช่วยให้มั่นใจได้ว่าในอุปกรณ์
ที่เปิดตัวใน Android 12 ขึ้นไปจะไม่มีการทำกระบวนการที่ไม่ได้รับอนุญาต
สิทธิ์เข้าถึง DebugFs