يضيف نظام التشغيل 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 ضمن
hardware/interfaces/dumpstate/1.1/
. - يندرج الرمز الأصلي لميزة dumpstate الذي يتحكّم في محتوى تقارير الأخطاء ضمن ملف برمجي قيد التطوير تحت
frameworks/native/cmds/dumpstate/
.
التنفيذ
لتنفيذ 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
.