Festa di salvataggio

Molti utenti dipendono molto dal proprio smartphone e necessitano affatto di un dispositivo funzionante nel tempo. Tuttavia, a volte i dispositivi si ritrovano in loop di riavvio, perciò gli utenti inviare richieste di assistenza o richieste di garanzia. Questo processo è frustrante per ed è costoso per produttori di dispositivi e operatori.

Android 8.0 include una funzionalità che invia un "gruppo di soccorso" quando rileva i componenti principali del sistema bloccati in loop di arresti anomali. Il gruppo di soccorso una serie di azioni per ripristinare il dispositivo. Ultima risorsa: Rescue Party riavvia il dispositivo in Recovery mode e chiede all'utente di eseguire un'operazione di fabbrica resettare.

Queste funzioni di salvataggio non sono richieste da Android Compatibility Definition Document, ma che possono comunque essere utili per ridurre le richieste di assistenza.

Implementazione

Rescue Party è abilitato per impostazione predefinita in Android 8.0 e l'implementazione è attiva /services/core/java/com/android/server/RescueParty.java. Rescue Party riceve informazioni sugli eventi di avvio e arresto anomalo e si avvia se:

  • Il sistema system_server si riavvia più di cinque volte in cinque minuti.
  • Un'app di sistema persistente ha un arresto anomalo più di cinque volte in 30 secondi.

Quando viene rilevata una di queste situazioni, il gruppo di soccorso passa alla fase successiva livello di salvataggio, elabora l'attività associata a quel livello e consente al dispositivo procedi per vedere se il problema si risolve. Ogni livello è progressivamente più aggressivo ciò che cancella o reimposta. L'ultimo livello richiede all'utente di ripristinare i dati di fabbrica dispositivo.

Per supportare Rescue Party, non è richiesto alcun supporto hardware speciale. Se implementata, il sistema di ripristino di un dispositivo deve rispondere Il comando e i dispositivi --prompt_and_wipe_data devono mostrare agli utenti un modo per confermare l'eventuale distruzione dei loro dati prima procedere. Il sistema di ripristino dovrebbe inoltre offrire all'utente la possibilità di tentare di riavviare il dispositivo.

Perché ogni livello di recupero può essere aggiunto fino a 5 minuti prima che un dispositivo sia utilizzabile i produttori di dispositivi non devono aggiungere livelli di recupero personalizzati. Tempo aumentato con un dispositivo inutilizzabile aumenta le probabilità che gli utenti avviino l'assistenza o la richiesta in garanzia anziché il recupero autonomo del dispositivo.

Convalida

Tutti gli eventi di recupero vengono soppressi quando sul dispositivo sono attivi dati USB perché è un segnale chiaro che qualcuno sta eseguendo il debug del dispositivo.

Per eseguire l'override di questa soppressione, esegui:

adb shell setprop persist.sys.enable_rescue 1

Da qui, puoi attivare un loop di arresto anomalo del sistema o dell'interfaccia utente.

Per attivare un loop di arresto anomalo di system_server di basso livello, esegui:

adb shell setprop debug.crash_system 1

Per attivare un loop di arresto anomalo di SystemUI di livello medio, esegui:

adb shell setprop debug.crash_sysui 1

Entrambi i loop di arresti anomali avviano la logica di recupero. Tutte le operazioni di salvataggio vengono nei log permanenti di PackageManager, archiviati /data/system/uiderrors.txt per ispezionare e eseguire il debug in un secondo momento. Questi log permanenti sono inclusi anche in tutte le segnalazioni di bug nella sezione "Pacchetto messaggi di avviso .