Banyak pengguna sangat bergantung pada ponsel mereka dan memerlukan perangkat yang berfungsi sepanjang waktu. Namun, terkadang perangkat mengalami loop mulai ulang, yang menyebabkan pengguna mengajukan tiket dukungan atau pertanyaan garansi. Proses ini membuat pengguna merasa frustrasi dan mahal bagi produsen perangkat dan operator.
Android 8.0 menyertakan fitur yang mengirimkan "tim penyelamat" saat melihat komponen sistem inti terjebak dalam loop error. Rescue Party kemudian mengeskalasikan melalui serangkaian tindakan untuk memulihkan perangkat. Sebagai upaya terakhir, Rescue Party akan memulai ulang perangkat ke mode pemulihan dan meminta pengguna untuk melakukan reset ke setelan pabrik.
Fitur penyelamatan ini tidak diwajibkan oleh Dokumen Definisi Kompatibilitas Android, tetapi mungkin masih berguna untuk mengurangi kasus dukungan.
Implementasi
Rescue Party diaktifkan secara default di Android 8.0, dan implementasinya berada di
/services/core/java/com/android/server/RescueParty.java
.
Rescue Party menerima informasi tentang peristiwa booting dan error, serta dimulai jika:
- system_server dimulai ulang lebih dari 5 kali dalam 5 menit.
- Aplikasi sistem persisten mengalami error lebih dari 5 kali dalam 30 detik.
Saat salah satu situasi ini terdeteksi, Rescue Party akan dieskalasikan ke tingkat penyelamatan berikutnya, memproses tugas yang terkait dengan tingkat tersebut, dan memungkinkan perangkat melanjutkan untuk melihat apakah perangkat tersebut pulih. Setiap level secara bertahap menjadi lebih agresif dalam apa yang dihapus atau direset. Tingkat terakhir meminta pengguna untuk mereset perangkat ke setelan pabrik.
Tidak diperlukan dukungan hardware khusus untuk mendukung Rescue Party. Jika diterapkan,
sistem pemulihan perangkat harus merespons
perintah --prompt_and_wipe_data
dan perangkat harus
menampilkan cara bagi pengguna untuk mengonfirmasi penghancuran data pengguna sebelum
melanjutkan. Sistem pemulihan juga harus memberi pengguna opsi
untuk mencoba mem-booting perangkat lagi.
Karena setiap tingkat penyelamatan dapat menambahkan hingga 5 menit sebelum perangkat dapat beroperasi lagi, produsen perangkat tidak boleh menambahkan tingkat penyelamatan kustom. Peningkatan waktu dengan perangkat yang tidak dapat dioperasikan membuat pengguna lebih cenderung memulai permintaan dukungan atau garansi, bukan memulihkan perangkat mereka sendiri.
Validasi
Semua peristiwa penyelamatan akan disembunyikan saat perangkat memiliki koneksi data USB aktif karena itu adalah sinyal kuat bahwa seseorang sedang men-debug perangkat.
Untuk mengganti penekanan 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 bug di bagian "Pesan
peringatan paket".