Pengguna bergantung pada ponsel mereka dan memerlukan perangkat yang berfungsi setiap saat. Namun, terkadang perangkat mengalami loop mulai ulang, yang menyebabkan pengguna mengajukan tiket dukungan atau pertanyaan garansi. Proses ini membuat pengguna frustrasi dan mahal bagi produsen perangkat dan operator.
Android 8.0 (level API 26) dan yang lebih tinggi menyertakan fitur yang memicu proses penyelamatan saat mendeteksi komponen sistem inti yang stuck dalam loop error. Pada sinyal ini, fitur Rescue Party meningkat melalui serangkaian tindakan untuk memulihkan perangkat. Sebagai upaya terakhir, Rescue Party memulai ulang perangkat ke mode pemulihan dan meminta pengguna untuk melakukan reset ke setelan pabrik.
tidak mewajibkan fitur penyelamatan ini, tetapi fitur ini mungkin berguna untuk mengurangi kasus dukungan.Penerapan
Rescue Party diaktifkan secara default 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_serverdimulai ulang lebih dari lima kali dalam lima menit.- Aplikasi sistem persisten mengalami error lebih dari lima kali dalam 30 detik.
Saat Rescue Party mendeteksi salah satu situasi ini, Rescue Party akan meningkat ke tingkat penyelamatan berikutnya, memproses tugas yang terkait dengan tingkat tersebut, dan memungkinkan perangkat melanjutkan untuk melihat apakah perangkat dapat dipulihkan. Setiap tingkat semakin agresif dalam menghapus atau mereset. Tingkat akhir meminta pengguna untuk mereset perangkat ke setelan pabrik.
Rescue Party tidak memerlukan dukungan hardware khusus. Jika diimplementasikan, sistem pemulihan perangkat harus merespons perintah --prompt_and_wipe_data dan perangkat harus menyediakan cara bagi pengguna untuk mengonfirmasi penghancuran data pengguna sebelum melanjutkan. Sistem pemulihan juga harus memberi pengguna opsi untuk mencoba mem-boot perangkat mereka lagi.
Karena setiap tingkat penyelamatan dapat menambahkan waktu hingga lima menit sebelum perangkat dapat dioperasikan lagi, produsen perangkat tidak boleh menambahkan tingkat penyelamatan kustom. Waktu yang lebih lama dengan perangkat yang tidak dapat dioperasikan membuat pengguna lebih cenderung memulai pertanyaan dukungan atau garansi, bukan memulihkan perangkat mereka sendiri.
Validasi
Rescue Party menekan semua peristiwa penyelamatan saat perangkat memiliki koneksi data USB aktif karena hal tersebut merupakan sinyal kuat bahwa seseorang sedang men-debug perangkat.
Untuk mengganti penekanan ini, jalankan:
adb shell setprop persist.sys.enable_rescue 1Dari sana, picu loop error sistem atau UI:
Untuk memicu loop error
system_servertingkat rendah, jalankan:adb shell setprop debug.crash_system 1adb shell stopadb shell startUntuk memicu loop error SystemUI tingkat menengah, jalankan:
adb shell setprop debug.crash_sysui 1
Kedua loop error memulai logika penyelamatan. Rescue Party juga mencatat semua operasi penyelamatan ke log PackageManager persisten yang disimpan di /data/system/uiderrors.txt untuk pemeriksaan dan proses debug nanti. Laporan bug juga menyertakan log persisten ini di bagian Pesan peringatan paket.