تنفيذ تسجيل دخول المورّدين بنطاق

يضيف 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 هذا، يجب تنفيذ واجهة 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، ويُنصح بشدة بإجراء ذلك، لأنّه يقلل بشكل كبير من كمية المعلومات الخاصة المضمّنة في تقارير الأخطاء.

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