يضيف Android 11 واجهة HAL جديدة، وهي IDumpstateDevice (الإصدار 1.1). تعرض واجهة HAL هذه طرقًا جديدة لتحديد نطاق أضيق لسجلات مورِّد الأجهزة المضمّنة في تقارير الأخطاء العادية، بالإضافة إلى السماح لإصدارات المستخدمين بتفعيل تسجيل سجلات مورِّد الأجهزة وإيقافه (الإعداد التلقائي لإصدارات المستخدمين هو إيقاف التسجيل). ويمنح ذلك مصنّعي المعدات الأصلية مزيدًا من التحكّم في المحتوى المضمّن في أنواع معيّنة من تقارير الأخطاء.
تؤثّر هذه الميزة في مصنّعي المعدات الأصلية إذا اختاروا تنفيذ واجهة HAL الاختيارية هذه. قد تتأثّر أنظمة SoC، استنادًا إلى ما يختاره مصنّع المعدات الأصلية لعرضه باستخدام واجهة HAL هذه. لا يُتوقّع حدوث أي تأثير على شركات الاتصالات.
يعتمد المحتوى الذي تدرجه في تقارير الأخطاء على المعلومات التي تراها ذات صلة بالتصحيح، ولكن بشكل عام، من الأفضل أن تكون المعلومات أكثر تفصيلاً.
الأمثلة والمصدر
يتوفّر تنفيذ تلقائي للإصدار 1.0 (النهائي) من IDumpstateDevice يعرض مثالاً على استخدام مكتبة 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 إذا كانت تنفّذ واجهة Dumpstate HAL. من المفترض أن يكون من السهل نسبيًا ترقية الأجهزة التي نفّذت IDumpstateDevice 1.0 قبل Android 11 إلى الإصدار 1.1، ويُنصح بشدة بإجراء ذلك، لأنّه يقلّل بشكل كبير من مقدار المعلومات الخاصة غير الضرورية المضمّنة في تقارير الأخطاء.
تعتمد هذه الميزة على التغييرات الأساسية في dumpstate المضمّنة أيضًا في Android 11، والتي تتوفّر ضمن frameworks/native/cmds/dumpstate.
من المرجّح أن يتطلّب تنفيذ واجهة HAL هذه بعض التغييرات في SEPolicy لخصائص النظام والملفات وما إلى ذلك لكي تعمل بشكل كامل، وسيتطلّب التنسيق مع مورّدي الأجهزة لتفريغ جميع المعلومات ذات الصلة في تقارير الأخطاء.
التخصيص
يمكن لمستخدم الجهاز تفعيل تسجيل سجلات مورِّد الأجهزة أو إيقافه باستخدام إعدادات المطوّرين.
عند إيقاف هذه الميزة، قد يستمر dumpstateBoard_1_1 في عرض الحد الأدنى من المعلومات الأساسية التي يحدّدها مصنّع المعدات الأصلية. عند إيقاف تسجيل سجلات مورِّد الأجهزة، لا يضيف IDumpstateDevice::dumpstateBoard سوى المعلومات الأساسية إلى تقرير الأخطاء، بينما عند تفعيل هذه الميزة، يتم تضمين أي معلومات يختارها مصنّع المعدات الأصلية.
يمكنك تعديل dumpstate.cpp (الذي يستدعي طرق IDumpstateDevice HAL)، على سبيل المثال، لزيادة المهلة المحدّدة لكي يكتمل dumpstateBoard.
ومع ذلك، يجب أن تظل المنطق الأساسي لـ dumpstate.cpp بدون تغيير.
يمكن أن تكون المهلات أي قيمة، ولكن يجب ألا تزيد بشكل كبير من الوقت الذي يستغرقه إكمال تقرير الأخطاء. على وجه الخصوص، إنّ DumpstateMode::CONNECTIVITY حسّاس جدًا للوقت ويجب تشغيله بأسرع ما يمكن لجمع جميع سجلات المودم/الشبكة اللاسلكية/الشبكات ذات الصلة.
التحقق من صحة البيانات
يتوفّر اختبار VTS لتنفيذ IDumpstateDevice، ويتوفّر اختبارات وحدة وظيفية لوظائف BugreportManager العامة.
حالة الاختبار اليدوي المقترَحة هي frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java.