Pesta Penyelamatan

Banyak pengguna sangat bergantung pada ponsel mereka dan membutuhkan perangkat yang berfungsi setiap saat. Namun, terkadang perangkat berakhir di loop reboot, yang menyebabkan pengguna mengajukan tiket dukungan atau pertanyaan garansi. Proses ini membuat frustasi bagi pengguna dan mahal bagi produsen dan operator perangkat.

Android 8.0 menyertakan fitur yang mengirimkan "pesta penyelamat" saat mengetahui komponen sistem inti macet di loop error. Rescue Party kemudian meningkat melalui serangkaian tindakan untuk memulihkan perangkat. Sebagai upaya terakhir, Rescue Party mem-boot ulang perangkat ke mode pemulihan dan meminta pengguna untuk melakukan reset pabrik.

Fitur penyelamatan ini tidak diperlukan oleh Dokumen Definisi Kompatibilitas Android , tetapi mungkin masih berguna untuk mengurangi kasus dukungan.

Penerapan

Rescue Party diaktifkan secara default di Android 8.0, dan implementasinya tinggal di /services/core/java/com/android/server/RescueParty.java . Rescue Party menerima informasi tentang peristiwa boot dan crash dan dimulai jika:

  • System_server restart lebih dari 5 kali dalam 5 menit.
  • Aplikasi sistem persisten mogok lebih dari 5 kali dalam 30 detik.

Saat salah satu dari situasi ini terdeteksi, Rescue Party meningkatkan ke level penyelamatan berikutnya, memproses tugas yang terkait dengan level tersebut, dan membiarkan perangkat melanjutkan untuk melihat apakah pulih. Setiap level secara progresif lebih agresif dalam apa yang dibersihkan atau disetel ulang. Level terakhir meminta pengguna untuk menyetel ulang perangkat ke setelan pabrik.

Tidak diperlukan dukungan perangkat keras khusus untuk mendukung Rescue Party. Jika diterapkan, sistem pemulihan perangkat harus merespons perintah --prompt_and_wipe_data dan perangkat harus memunculkan 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 level penyelamatan dapat bertambah hingga 5 menit sebelum perangkat dapat dioperasikan kembali, produsen perangkat tidak boleh menambahkan level penyelamatan khusus. Peningkatan waktu dengan perangkat yang tidak dapat dioperasikan membuat pengguna lebih mungkin untuk memulai penyelidikan dukungan atau garansi daripada memulihkan sendiri perangkat mereka.

Validasi

Semua peristiwa penyelamatan ditekan saat perangkat memiliki koneksi data USB aktif karena itu adalah sinyal kuat bahwa seseorang sedang men-debug perangkat.

Untuk menimpa penindasan ini, jalankan:

adb shell setprop persist.sys.enable_rescue 1

Dari sana, Anda dapat memicu loop crash sistem atau UI.

Untuk memicu loop kerusakan system_server tingkat rendah, jalankan:

adb shell setprop debug.crash_system 1

Untuk memicu loop kerusakan SystemUI tingkat menengah, jalankan:

adb shell setprop debug.crash_sysui 1

Kedua crash loop memulai logika penyelamatan. Semua operasi penyelamatan juga dicatat ke log PackageManager persisten yang disimpan di /data/system/uiderrors.txt untuk pemeriksaan dan debugging nanti. Log persisten ini juga disertakan dalam setiap laporan bug di bagian "Pesan peringatan paket".