Banyak pengguna sangat bergantung pada ponsel mereka dan memerlukan perangkat yang berfungsi sama sekali baik. Namun, kadang-kadang perangkat berakhir di {i>reboot<i}, yang menyebabkan pengguna menyampaikan tiket dukungan atau pertanyaan mengenai garansi. Proses ini menjengkelkan bagi pengguna dan mahal bagi produsen dan operator perangkat.
Android 8.0 menyertakan fitur yang mengirimkan "pesta penyelamatan" saat perangkat melihat komponen sistem inti yang terjebak dalam loop error. {i>Rescue Party<i} kemudian mengeskalasi melalui serangkaian tindakan untuk memulihkan perangkat. Sebagai upaya terakhir, Rescue Party memulai ulang perangkat ke mode pemulihan dan meminta pengguna untuk melakukan pabrik {i>reset<i}.
Fitur penyelamatan ini tidak diperlukan oleh perangkat Dokumen Definisi Kompatibilitas, tetapi mungkin masih berguna untuk mengurangi kasus dukungan.
Implementasi
Rescue Party diaktifkan secara default di Android 8.0, dan implementasinya dijalankan di
/services/core/java/com/android/server/RescueParty.java
.
Rescue Party menerima informasi tentang peristiwa booting dan error serta memulai jika:
- System_server memulai ulang lebih dari 5 kali dalam 5 menit.
- Aplikasi sistem yang persisten mengalami error lebih dari 5 kali dalam 30 detik.
Ketika salah satu situasi ini terdeteksi, Rescue Party akan mengeskalasi ke level penyelamatan, memproses tugas yang terkait dengan level tersebut, dan memungkinkan perangkat lanjutkan untuk melihat apakah jaringan pulih. Setiap level secara progresif menjadi lebih agresif dalam apa yang dibersihkan atau direset. Level terakhir meminta pengguna mereset perangkat seluler.
Tidak diperlukan dukungan hardware khusus untuk mendukung Rescue Party. Jika diterapkan,
sistem pemulihan perangkat
harus menanggapi
Perangkat dan perintah --prompt_and_wipe_data
harus
memunculkan cara bagi pengguna untuk mengonfirmasi
pemusnahan data pengguna sebelum
melanjutkan. Sistem pemulihan juga harus
memberi pengguna opsi untuk
mencoba mem-{i>booting<i}
perangkat mereka lagi.
Karena setiap level penyelamatan dapat bertambah hingga 5 menit sebelum perangkat dapat dioperasikan sekali lagi, produsen perangkat tidak boleh menambahkan tingkat penyelamatan khusus. Waktu lebih lama dengan perangkat yang tidak dapat dioperasikan, akan membuat pengguna memulai dukungan atau terkait garansi, bukan memulihkan perangkat mereka sendiri.
Validasi
Semua peristiwa penyelamatan akan disembunyikan saat perangkat memiliki data USB yang aktif karena itu adalah sinyal kuat bahwa seseorang sedang melakukan {i>debugging<i} pada perangkat.
Untuk mengganti penghentian ini, jalankan:
adb shell setprop persist.sys.enable_rescue 1
Dari sana, Anda dapat memicu loop error sistem atau UI.
Untuk memicu loop error system_server
tingkat rendah, jalankan:
adb shell setprop debug.crash_system 1
Untuk memicu loop error SystemUI tingkat menengah, jalankan:
adb shell setprop debug.crash_sysui 1
Kedua loop error memulai logika penyelamatan. Semua operasi penyelamatan juga
dicatat ke log PackageManager persisten yang disimpan di
/data/system/uiderrors.txt
untuk pemeriksaan dan proses debug nanti.
Log persisten ini juga disertakan dalam setiap
laporan {i>bug<i} di bagian bawah
pesan peringatan" bagian.