Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.
Se usó la API de Cloud Translation para traducir esta página.
Switch to English

Grupo de rescate

Muchos usuarios dependen en gran medida de sus teléfonos y requieren un dispositivo que funcione en todo momento. Sin embargo, a veces los dispositivos terminan en ciclos de reinicio, lo que hace que los usuarios presenten tickets de soporte o consultas de garantía. Este proceso es frustrante para los usuarios y costoso para los fabricantes y operadores de dispositivos.

Android 8.0 incluye una función que envía un "grupo de rescate" cuando se da cuenta de que los componentes centrales del sistema se atascan en bucles de bloqueo. Rescue Party luego se intensifica a través de una serie de acciones para recuperar el dispositivo. Como último recurso, Rescue Party reinicia el dispositivo en modo de recuperación y solicita al usuario que realice un restablecimiento de fábrica.

Estas funciones de rescate no son requeridas por el Documento de definición de compatibilidad de Android , pero aún pueden ser útiles para reducir los casos de soporte.

Implementación

Rescue Party está habilitado de forma predeterminada en Android 8.0, y la implementación se encuentra en /services/core/java/com/android/server/RescueParty.java . Rescue Party recibe información sobre eventos de arranque y falla y se inicia si:

  • El system_server se reinicia más de 5 veces en 5 minutos.
  • Una aplicación de sistema persistente se bloquea más de 5 veces en 30 segundos.

Cuando se detecta una de estas situaciones, Rescue Party pasa al siguiente nivel de rescate, procesa la tarea asociada con ese nivel y deja que el dispositivo proceda para ver si se recupera. Cada nivel es progresivamente más agresivo en lo que borra o reinicia. El nivel final solicita al usuario que restablezca el dispositivo de fábrica.

No se requiere soporte de hardware especial para soportar Rescue Party. Si se implementa, el sistema de recuperación de un dispositivo debe responder al comando --prompt_and_wipe_data y los dispositivos deben encontrar una forma para que los usuarios confirmen cualquier destrucción de los datos del usuario antes de continuar. El sistema de recuperación también debe dar al usuario la opción de intentar reiniciar su dispositivo.

Debido a que cada nivel de rescate puede agregar hasta 5 minutos antes de que un dispositivo vuelva a estar operativo, los fabricantes de dispositivos no deben agregar niveles de rescate personalizados. El mayor tiempo con un dispositivo inoperable hace que sea más probable que los usuarios inicien una consulta de soporte o garantía en lugar de recuperar automáticamente su dispositivo.

Validación

Todos los eventos de rescate se suprimen cuando el dispositivo tiene una conexión de datos USB activa porque es una señal fuerte de que alguien está depurando el dispositivo.

Para anular esta supresión, ejecute:

adb shell setprop persist.sys.enable_rescue 1

Desde allí, puede activar un bucle de bloqueo del sistema o de la interfaz de usuario.

Para desencadenar un bucle de bloqueo system_server bajo nivel, ejecute:

adb shell setprop debug.crash_system 1

Para activar un bucle de bloqueo de SystemUI de nivel medio, ejecute:

adb shell setprop debug.crash_sysui 1

Ambos bucles de choque inician la lógica de rescate. Todas las operaciones de rescate también se registran en los registros persistentes de PackageManager almacenados en /data/system/uiderrors.txt para su posterior inspección y depuración. Estos registros persistentes también se incluyen en todos los informes de errores en la sección "Mensajes de advertencia del paquete".