يجب أن يتم شحن الأجهزة التي تعمل بنظام التشغيل Android 12 باستخدام إصدارات kernel أعلى من الإصدار 5.4 مع kernel GKI. لكي يتمكن الشركاء من الوصول إلى DebugFS
في إصدارات userdebug أثناء تطويرهم على نواة GKI، يتم تمكين تكوين kernel CONFIG_DEBUG_FS
في defconfig GKI. لا تقم مطلقًا بتثبيت DebugFS
في إصدارات المستخدم للأجهزة التي تعمل بنظام التشغيل Android 12.
تتمتع إصدارات Userdebug بتغطية اختبارية أفضل من إصدارات المستخدم ويتم اختبارها بشكل مكثف طوال دورة التطوير. تعمل الخطة التالية على تقليل الفرق بين نوعي البناء فيما يتعلق بالوصول إلى DebugFS
، وتوفر هذه الفوائد:
- يمنع إنشاء userdebug من الاعتماد عن طريق الخطأ على
DebugFS
للحصول على وظائف جديدة - يضمن معرفة أي وظيفة موجودة معطلة بسبب نقص DebugFS في وقت مبكر من دورة التطوير
يتم تصنيف عمليات الوصول إلى Debugfs في إصدارات userdebug على النحو التالي:
- عمليات تهيئة ملف
DebugFS
أثناء تشغيل الجهاز، مثل الوصول للكتابة إلى ملف فيDebugFS
لتشغيل جمع بيانات تصحيح الأخطاء. - إنشاء Bugreport: يقرأ HAL dumpstate ملفات
DebugFS
عندما يتم استدعاءDumpstateBoard()
بواسطةdumpstate
. تصبح هذه المعلومات جزءًا من تقرير الأخطاء. - الاختبار والتحقق الخاص بالجهاز.
يصف الجدول التالي كيفية دعم كل فئة من هذه الفئات الثلاث في Android 12. لاحظ أن ما يلي ينطبق فقط على إصدارات userdebug حيث لا يمكن تثبيت DebugFS
في إصدارات المستخدم.
حالة الاستخدام | إصدار Android 12 لتصحيح أخطاء المستخدم |
---|---|
تهيئة ملفات DebugFS لمرة واحدة، أثناء بدء التشغيل . يحدث هذا الوصول مرة واحدة فقط أثناء وقت التمهيد. | يقوم Dumpstate HAL بتنفيذ هذا أثناء تهيئة HAL. لتمكين نفس الشيء، يقوم init بتحميل DebugFS في إصدارات userdebug قبل تهيئة HAL. يقوم Init باستدعاء umount() على DebugFS عندما يكتمل تشغيل الجهاز. |
إنشاء Bugreport : يقرأ HAL dumpstate ملفات 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 لحالة التفريغ. للحصول على مثال حول كيفية القيام بذلك، راجع DNM: مثال لتهيئة وقت التمهيد لملفاتDebugFS
. - لا تسمح بالوصول إلى
DebugFS
أثناء وقت التشغيل. تنطبق الاستثناءات التالية:- إنشاء Bugreport (يأتي من HAL لمستودع النفايات)
- الاختبار والتحقق من الصحة (يمكن الوصول إليه عن طريق
adb root
وshell
- تأكد من تثبيت DebugFS أولاً)
يمكن للمطورين تعيين خاصية تصحيح الأخطاء المستمرة persist.dbg.keep_debugfs_mounted
لإبقاء DebugFs
مثبتًا عبر عمليات إعادة التشغيل على إصدارات userdebug وeng.
تضمن اختبارات توافق GTS عدم تثبيت نظام ملفات DebugFS
في إصدارات المستخدم. تضمن عبارات Sepolicy neverallow
أنه في الأجهزة التي تعمل بنظام التشغيل Android 12 أو أعلى، لا يتم منح العمليات غير المصرح بها إمكانية الوصول إلى DebugFs
.