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

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

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

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

الأمثلة والمصدر

هناك عملية تنفيذ تلقائية للإصدار 1.0 (المتوقف نهائيًا) من واجهة برمجة التطبيقات IDumpstateDevice التي تعرض مثالاً على استخدام مكتبة util 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).

إنّ تنفيذ HAL لميزة dumpstate اختياري. على جميع الأجهزة الجديدة التي تعمل بالإصدار Android 11 تنفيذ واجهة برمجة التطبيقات IDumpstateDevice 1.1 إذا كانت تنفِّذ واجهة برمجة التطبيقات Dumpstate HAL. من المفترض أن يكون من السهل نسبيًا ترقية الأجهزة التي سبق أن نفّذت IDumpstateDevice 1.0 قبل Android 11 إلى الإصدار 1.1، ويُنصح بشدة بإجراء ذلك، لأنّه يقلل بشكل كبير من كمية المعلومات الخاصة المضمّنة في تقارير الأخطاء.

تعتمد هذه الميزة على التغييرات في حالة تجميع البيانات الأساسية التي تم تضمينها أيضًا في 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.