Đảng cứu hộ

Nhiều người dùng phụ thuộc rất nhiều vào điện thoại của họ và luôn yêu cầu một thiết bị hoạt động. Tuy nhiên, đôi khi thiết bị gặp phải tình trạng lặp lại khởi động lại, khiến người dùng phải gửi 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 người dùng và tốn kém cho các nhà sản xuất và nhà cung cấp thiết bị.

Android 8.0 bao gồm một tính năng gửi "nhóm giải cứu" 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 đó, Rescue Party tiến hành một loạt hành động để khôi phục thiết bị. Biện pháp cuối cùng, Rescue Party khởi động lại thiết bị vào chế độ khôi phục và nhắc người dùng thực hiện khôi phục cài đặt gốc.

Các tính năng cứu hộ này không được yêu cầu trong Tài liệu định nghĩa tương thích của Android nhưng vẫn có thể hữu ích để giảm bớt các trường hợp hỗ trợ.

Thực hiện

Rescue Party được bật theo mặc định trong Android 8.0 và quá trình triển khai có trong /services/core/java/com/android/server/RescueParty.java . Bên cứu hộ nhận được 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 một trong những tình huống này, Rescue Party sẽ chuyển lên cấp độ cứu hộ tiếp theo, xử lý tác vụ liên quan đến cấp độ đó và cho phép thiết bị tiến hành xem liệu thiết bị có phục hồi hay không. Mỗi cấp độ sẽ dần dần tích cực hơn trong những gì nó xóa hoặc đặt lại. Cấp độ cuối cùng sẽ nhắc người dùng khôi phục cài đặt gốc cho thiết bị.

Không cần hỗ trợ phần cứng đặc biệt để 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 lệnh --prompt_and_wipe_data và các thiết bị phải đưa ra cách để người dùng xác nhận mọi hành vi hủy dữ liệu người dùng trước khi tiếp tục. Hệ thống khôi phục cũng sẽ cung cấp cho người dùng tùy chọn thử khởi động lại thiết bị của họ.

Vì mỗi cấp độ cứu hộ có thể cộng thêm tối đa 5 phút trước khi thiết bị có thể 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ộ tùy 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 bắt đầu yêu cầu hỗ trợ hoặc bảo hành thay vì tự khôi phục thiết bị của mình.

Thẩm định

Tất cả cá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 cho thấy ai đó đang gỡ lỗi thiết bị.

Để ghi đè sự ngăn 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 va chạm đều bắt đầu logic cứu hộ. Tất cả các hoạt động 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".