Pengguna mengandalkan 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 pemulihan saat mendeteksi komponen sistem inti mengalami masalah loop error. Saat sinyal ini diterima, fitur Tim Penyelamat akan melakukan 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.
Implementasi
Pesta Penyelamatan diaktifkan secara default dan implementasinya ada 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 mendeteksi salah satu situasi ini, Rescue Party akan meningkatkan ke tingkat penyelamatan berikutnya, memproses tugas yang terkait dengan tingkat tersebut, dan membiarkan perangkat melanjutkan untuk melihat apakah perangkat pulih. Setiap level semakin agresif dalam hal yang dibersihkan atau direset. Level terakhir meminta pengguna mereset perangkat ke setelan pabrik.
Rescue Party tidak memerlukan dukungan hardware khusus. Jika diterapkan, 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 kembali, produsen perangkat tidak boleh menambahkan tingkat penyelamatan kustom. Waktu yang lebih lama dengan perangkat yang tidak dapat dioperasikan membuat pengguna lebih cenderung memulai dukungan atau pertanyaan garansi, bukan memulihkan perangkat mereka sendiri.
Validasi
Pesta Penyelamatan menekan semua peristiwa penyelamatan saat perangkat memiliki koneksi data USB aktif karena hal itu 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 tingkat rendah
system_server, 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 diperiksa dan di-debug nanti. Laporan bug juga menyertakan log persisten ini di bagian Pesan peringatan paket.