Nhiều người dùng phụ thuộc nhiều vào điện thoại và cần thiết bị hoạt động mọi lúc. Tuy nhiên, đôi khi thiết bị sẽ rơi vào 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. Quy trình này gây phiền hà cho người dùng và tốn kém cho nhà sản xuất thiết bị cũng như nhà mạng.
Android 8.0 có một tính năng gửi "nhóm cứu hộ" khi nhận thấy các thành phần hệ thống cốt lõi bị kẹt trong vòng lặp sự cố. Sau đó, Nhóm cứu hộ sẽ chuyển lên cấp trên thông qua một loạt hành động để khôi phục thiết bị. Trong trường hợp cuối cùng, Rescue Party sẽ khởi động lại thiết bị ở chế độ khôi phục và nhắc người dùng đặt lại về trạng thái ban đầu.
Tài liệu định nghĩa về khả năng tương thích với Android không bắt buộc phải có các tính năng cứu hộ này, nhưng vẫn có thể hữu ích để giảm số lượng trường hợp cần hỗ trợ.
Triển khai
Rescue Party được bật theo mặc định trong Android 8.0 và hoạt động triển khai nằm trong /services/core/java/com/android/server/RescueParty.java
.
Rescue Party nhận thông tin về các sự kiện khởi động và sự cố, đồng thời bắt đầu nếu:
- system_server khởi động lại hơn 5 lần trong 5 phú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 một trong những tình huống này, Rescue Party sẽ chuyển lên cấp cứu tiếp theo, xử lý tác vụ liên kết với cấp đó và cho phép thiết bị tiếp tục để xem liệu thiết bị có khôi phục hay không. Mỗi cấp độ sẽ ngày càng mạnh mẽ hơn trong việc xoá hoặc đặt lại. Cấp cuối cùng nhắc người dùng đặt lại thiết bị về trạng thái ban đầu.
Bạn không cần hỗ trợ phần cứng đặc biệt để chơi 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 lệnh --prompt_and_wipe_data
và thiết bị phải hiển thị cách để người dùng xác nhận việc huỷ bỏ 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 cho phép người dùng thử khởi động lại thiết bị.
Vì mỗi cấp độ cứu hộ có thể thêm tối đa 5 phút trước khi thiết bị hoạt động trở lại, nên nhà sản xuất thiết bị không nên thêm cấp độ cứu hộ tuỳ chỉnh. Thời gian sử dụng thiết bị không hoạt động tăng lên 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ả sự kiện cứu hộ đều bị chặn khi thiết bị có kết nối dữ liệu USB đang hoạt động vì đó là tín hiệu mạnh mẽ cho thấy có người đang gỡ lỗi thiết bị.
Để ghi đè lệnh 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 cứu hộ. Tất cả các thao tác cứu hộ cũng được ghi vào nhật ký PackageManager liên tục được lưu trữ tại /data/system/uiderrors.txt
để kiểm tra và gỡ lỗi sau này.
Các nhật ký liên tục này cũng có trong mọi báo cáo lỗi trong phần "Thông báo cảnh báo gói".