Rescue Party

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

يتضمّن نظام التشغيل Android 8.0 ميزة تُرسِل "فريق إنقاذ" عندما تلاحظ توقّف مكوّنات النظام الأساسية عن العمل في حلقة متكرّرة من الأعطال. بعد ذلك، تصعِّد Rescue Party المشكلة من خلال تنفيذ سلسلة من الإجراءات لاسترداد الجهاز. كحل أخير، يعيد Rescue Party تشغيل الجهاز في وضع الاسترداد ويطلب من المستخدم إجراء عملية إعادة ضبطه على الإعدادات الأصلية.

لا يتطلّب مستند تحديد التوافق مع Android استخدام ميزات الاسترداد هذه، ولكن قد يكون من المفيد استخدامها لتقليل عدد طلبات الدعم.

التنفيذ

تكون ميزة Rescue Party مفعَّلة تلقائيًا في Android 8.0، ويتم تنفيذها في /services/core/java/com/android/server/RescueParty.java. يتلقّى Rescue Party معلومات عن أحداث التشغيل والتعطّل ويبدأ في الحالات التالية:

  • تتم إعادة تشغيل system_server أكثر من 5 مرات في 5 دقائق.
  • تعطُّل تطبيق نظام بشكل متكرر أكثر من 5 مرات في 30 ثانية

عند رصد أحد هذه المواقف، يصعِّد Rescue Party المشكلة إلى المستوى التالي للإنقاذ، ويعالج المهمة المرتبطة بهذا المستوى، ويسمح للجهاز بمتابعة العمل لمعرفة ما إذا كان سيستعيد حالته. يزداد مستوى إزالة البيانات أو إعادة ضبطها بشكل تدريجي. يطلب المستوى النهائي من المستخدم إعادة ضبط الجهاز على الإعدادات الأصلية.

لا يلزم توفُّر أجهزة خاصة لاستخدام لعبة Rescue Party. في حال تنفيذه، يجب أن يستجيب نظام الاسترداد في الجهاز لأمر --prompt_and_wipe_data، ويجب أن يوفّر الجهاز طريقة للمستخدمين لتأكيد أيّ عملية تدمير لبيانات المستخدمين قبل المتابعة. من المفترض أن يمنح نظام الاسترداد المستخدم أيضًا خيار محاولة بدء تشغيل جهازه مرة أخرى.

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

التحقُّق

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

لتجاوز هذا الإلغاء، يمكنك تنفيذ ما يلي:

adb shell setprop persist.sys.enable_rescue 1

من هناك، يمكنك تشغيل حلقة تعطُّل للنظام أو واجهة المستخدم.

لبدء حلقة تعطُّل system_server منخفضة المستوى، شغِّل:

adb shell setprop debug.crash_system 1

لبدء حلقة تعطُّل SystemUI من المستوى المتوسط، شغِّل:

adb shell setprop debug.crash_sysui 1

تبدأ كلتا حلقتَي الأعطال منطق الإنقاذ. يتم أيضًا تسجيل جميع عمليات الإنقاذ في سجلّات PackageManager الثابتة التي يتم تخزينها في /data/system/uiderrors.txt لفحصها وتصحيح أخطاءها لاحقًا. يتم أيضًا تضمين هذه السجلات الثابتة في كل تقرير خطأ ضمن قسم "رسائل تحذير الحزمة".