Nhiều người dùng phụ thuộc rất nhiều vào điện thoại và đòi hỏi phải có một thiết bị hoạt động tốt bất cứ lúc nào. Tuy nhiên, đôi khi các thiết bị gặp phải vòng lặp khởi động lại, khiến người dùng gửi phiếu yêu cầu hỗ trợ hoặc yêu cầu bảo hành. Quá trình này gây khó chịu cho và gây tốn kém cho nhà sản xuất thiết bị cũng như nhà mạng.
Android 8.0 có tính năng gửi một "nhóm giải cứu" khi thông báo các thành phần hệ thống cốt lõi bị mắc kẹt trong vòng lặp sự cố. Sau đó, Rescue Party sẽ chuyển lên cấp trên qua một loạt thao tác để khôi phục thiết bị. Khi không còn cách nào khác, Rescue Party khởi động lại thiết bị về chế độ khôi phục và nhắc người dùng khôi phục chế độ cài đặt gốc đã đặt lại.
Android không yêu cầu các tính năng khôi phục này Compatibility Definition Document (Tài liệu định nghĩa về khả năng tương thích), nhưng vẫn có thể giúp giảm số lượng yêu cầu hỗ trợ.
Triển khai
Rescue Party được bật theo mặc định trong Android 8.0 và quá trình triển khai diễn ra trong
/services/core/java/com/android/server/RescueParty.java
.
Bên cứu hộ nhận thông tin về các sự kiện khởi động và sự cố và bắt đầu nếu:
- system_server khởi động lại hơn 5 lần trong 5 phút.
- Một ứng dụng hệ thống liên tục gặp sự cố hơn 5 lần trong 30 giây.
Khi phát hiện thấy một trong các tình huống này, Rescue Party sẽ chuyển sang tình huống tiếp theo cấp cứu hộ, xử lý tác vụ liên quan đến cấp độ đó và cho phép thiết bị hãy tiến hành xem mã khôi phục lại chưa. Mỗi cấp sẽ trở nên linh hoạt hơn trong những nội dung mà công cụ này xoá hoặc đặt lại. Cấp độ cuối cùng nhắc người dùng đặt lại thiết bị.
Không yêu cầu hỗ trợ đặc biệt về phần cứng để hỗ trợ Rescue Party. Nếu được triển khai,
hệ thống khôi phục của thiết bị phải phản hồi với
Lệnh và thiết bị --prompt_and_wipe_data
phải
đưa ra một cách thức để người dùng xác nhận mọi hành vi phá huỷ dữ liệu người dùng trước khi
tiếp tục. Hệ thống khôi phục cũng phải cung cấp cho người dùng tuỳ chọn
cố khởi động lại thiết bị của họ.
Vì mỗi cấp độ cứu hộ có thể mất tới 5 phút trước khi thiết bị có thể hoạt động xin nhắc lại rằng nhà sản xuất thiết bị không nên thêm các cấp khôi phục tuỳ chỉnh. Đã tăng thời gian khiến thiết bị không hoạt động khiến người dùng có nhiều khả năng yêu cầu hỗ trợ hoặc yêu cầu bảo hành thay vì tự khôi phục thiết bị.
Xác nhận kết quả
Tất cả các sự kiện khôi phục đều bị chặn khi thiết bị có dữ liệu USB đang hoạt động vì đó là tín hiệu mạnh cho biết ai đó đang gỡ lỗi thiết bị.
Để ghi đè chế độ chặn này, hãy chạy:
adb shell setprop persist.sys.enable_rescue 1
Từ đó, bạn có thể kích hoạt vòng lặp sự cố hệ thống hoặc giao diện người dùng.
Để kích hoạt vòng lặp sự cố system_server
cấp thấp, hãy chạy:
adb shell setprop debug.crash_system 1
Để kích hoạt vòng lặp sự cố SystemUI cấp trung, hãy chạy:
adb shell setprop debug.crash_sysui 1
Cả hai vòng lặp sự cố đều khởi tạo logic khôi phục. Tất cả các hoạt động cứu hộ cũng
đã ghi vào nhật ký PackageManager cố định được lưu trữ tại
/data/system/uiderrors.txt
để kiểm tra và gỡ lỗi sau.
Các nhật ký cố định này cũng có trong mọi báo cáo lỗi trong phần "Gói
cảnh báo" .