تنفيذ ميزة "تسجيل المورّدين على مستوى النطاق"

يضيف نظام التشغيل Android 11 طبقة تجريد أجهزة جديدة، وهي IDumpstateDevice (الإصدار 1.1). تعرض طبقة HAL هذه طرقًا جديدة لتحديد نطاق أضيق لسجلّات المورّد التي يتم تضمينها في تقارير الأخطاء العادية، بالإضافة إلى السماح بإيقاف سجلّات المورّد وتفعيلها في إصدارات المستخدمين (يكون الإعداد التلقائي في إصدارات المستخدمين هو الإيقاف). ويمنح ذلك الشركات المصنّعة للأجهزة الأصلية المزيد من التحكّم في المحتوى الذي يتم تضمينه في أنواع معيّنة من تقارير الأخطاء.

تؤثّر هذه الميزة في الشركات المصنّعة للأجهزة الأصلية إذا اختارت تنفيذ طبقة تجريد الأجهزة الاختيارية هذه. قد تتأثر شرائح SoC بناءً على ما يختاره مصنّع المعدات الأصلية لعرضه باستخدام طبقة HAL هذه. ليس من المتوقّع أن يؤثّر ذلك في شركات النقل.

يعتمد المحتوى الذي تضمّنه في تقارير الأخطاء على المعلومات التي تراها مناسبة لتصحيح الأخطاء، ولكن بشكل عام، كلما كان المحتوى أكثر تفصيلاً كان ذلك أفضل.

أمثلة ومصدر

يتوفّر تنفيذ تلقائي للإصدار 1.0 (الذي تم إيقافه نهائيًا) من IDumpstateDevice يعرض مثالاً على استخدام مكتبة الأداة المساعدة dumpstate: frameworks/native/cmds/dumpstate/DumpstateUtil.h. يتوفّر أيضًا تنفيذ Cuttlefish لواجهة HAL 1.1: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*.

يمكنك العثور على رمز المصدر هنا:

التنفيذ

لتنفيذ واجهة HAL هذه، عليك تنفيذ واجهة android.hardware.dumpstate@1.1::IDumpstateDevice HAL. تتوفّر العديد من قيم DumpstateMode المحتملة، ولكن من غير المرجّح أن يتوافق جهاز واحد مع جميع هذه القيم (على سبيل المثال، WEAR للأجهزة التي لا تعمل بنظام التشغيل Wear OS).

إنّ تنفيذ dumpstate HAL اختياري. يجب أن تتضمّن جميع الأجهزة الجديدة التي تعمل بنظام التشغيل Android 11 واجهة IDumpstateDevice 1.1 إذا كانت تتضمّن واجهة HAL الخاصة بخدمة Dumpstate. يجب أن يكون من السهل نسبيًا ترقية الأجهزة التي سبق لها تنفيذ الإصدار 1.0 من IDumpstateDevice قبل 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 حسّاس جدًا للوقت ويجب تشغيله بأسرع ما يمكن لجمع جميع سجلات المودم/شبكة Wi-Fi/الشبكات ذات الصلة.

التحقُّق

يتوفّر اختبار VTS لتنفيذ IDumpstateDevice، كما تتوفّر اختبارات وحدة وظيفية لوظائف BugreportManager العامة.

حالة الاختبار اليدوي المقترَحة هي frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java.