Fiesta de rescate

Muchos usuarios dependen en gran medida de sus teléfonos y necesitan un dispositivo que funcione. tiempo. Sin embargo, a veces los dispositivos se reinician, lo que provoca que los usuarios presentar tickets de asistencia o consultas sobre garantía. Este proceso es frustrante para para los usuarios y costosos para fabricantes y operadores de dispositivos.

Android 8.0 incluye una función que envía un "grupo de rescate" cuando se da cuenta componentes principales del sistema atascados en bucles de falla. Luego, el grupo de rescate se deriva de una serie de acciones para recuperarlo. Como último recurso, Fiesta de rescate Reinicia el dispositivo en Modo de recuperación (Recovery mode) y le solicita al usuario que realice la configuración de fábrica. restablecer.

Estas funciones de rescate no son requeridas por la página Documento de definición de compatibilidad, aunque puede ser útil para reducir los casos de asistencia.

Implementación

La función Grupo de rescate está habilitada de forma predeterminada en Android 8.0, y la implementación se encuentra /services/core/java/com/android/server/RescueParty.java El grupo de rescate recibe información sobre eventos de inicio y falla, y comienza en los siguientes casos:

  • El system_server se reinicia más de 5 veces en 5 minutos.
  • Una app del sistema persistente falla más de 5 veces en 30 segundos.

Cuando se detecta una de estas situaciones, el grupo de rescate se eleva a la siguiente nivel de recuperación, procesa la tarea asociada con ese nivel y permite que el dispositivo procede a ver si se recupera. Cada nivel es progresivamente más agresivo en lo que se borra o restablece. En el nivel final, se le solicita al usuario que restablezca la configuración de fábrica del dispositivo.

No se requiere compatibilidad de hardware especial para admitir Grupo de rescate. Si se implementa, el sistema de recuperación de un dispositivo debe responder a la el comando --prompt_and_wipe_data y los dispositivos deben ofrecer una forma para que los usuarios confirmen cualquier destrucción de sus datos antes de en curso. El sistema de recuperación también debería darle al usuario la opción de intenta iniciar su dispositivo nuevamente.

Porque cada nivel de recuperación puede sumar hasta 5 minutos antes de que se pueda operar un dispositivo Los fabricantes de dispositivos no deberían agregar niveles de rescate personalizados. Mayor tiempo con un dispositivo que no funciona aumenta las probabilidades de que los usuarios inicien un servicio de asistencia de garantía en lugar de la recuperación automática del dispositivo.

Validación

Todos los eventos de rescate se suprimen cuando el dispositivo tiene datos USB activos porque es un indicador claro de que alguien depura el dispositivo.

Para anular esta supresión, ejecuta lo siguiente:

adb shell setprop persist.sys.enable_rescue 1

Desde allí, puedes activar un bucle de fallas del sistema o de la IU.

Para activar un bucle de fallas de system_server de bajo nivel, ejecuta lo siguiente:

adb shell setprop debug.crash_system 1

Para activar un bucle de fallas de SystemUI de nivel medio, ejecuta lo siguiente:

adb shell setprop debug.crash_sysui 1

Ambos bucles de falla inician la lógica de recuperación. Todas las operaciones de rescate en los registros persistentes de PackageManager almacenados en /data/system/uiderrors.txt para una inspección y depuración posterior. Estos registros persistentes también se incluyen en todos los informes de errores en la sección mensajes de advertencia sección.