Triển khai tính năng ghi nhật ký theo phạm vi của nhà cung cấp

Android 11 thêm một HAL mới, IDumpstateDevice (phiên bản 1.1). HAL này hiển thị các phương thức mới để thu hẹp phạm vi nhật ký của nhà cung cấp được đưa vào báo cáo lỗi tiêu chuẩn, cũng như cho phép các bản dựng của người dùng bật và tắt tính năng ghi nhật ký của nhà cung cấp (mặc định cho các bản dựng của người dùng là tắt). Điều này giúp OEM có nhiều quyền kiểm soát hơn đối với những nội dung được đưa vào các loại báo cáo lỗi cụ thể.

Tính năng này ảnh hưởng đến các nhà sản xuất thiết bị gốc (OEM) nếu họ chọn triển khai HAL không bắt buộc này. SoC có thể bị ảnh hưởng, tuỳ thuộc vào nội dung mà OEM chọn hiển thị bằng HAL này. Các nhà mạng dự kiến sẽ không bị ảnh hưởng.

Nội dung bạn đưa vào báo cáo lỗi phụ thuộc vào thông tin bạn thấy phù hợp để gỡ lỗi, nhưng nói chung, càng chi tiết càng tốt.

Ví dụ và nguồn

Có một cách triển khai mặc định cho phiên bản IDumpstateDevice 1.0 (không dùng nữa), trong đó có ví dụ về cách sử dụng thư viện tiện ích dumpstate: frameworks/native/cmds/dumpstate/DumpstateUtil.h. Ngoài ra, còn có một cách triển khai Cuttlefish của HAL 1.1: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*.

Mã nguồn nằm ở đây:

Triển khai

Để triển khai HAL này, hãy triển khai giao diện HAL android.hardware.dumpstate@1.1::IDumpstateDevice. Có nhiều giá trị DumpstateMode có thể có, nhưng không phải giá trị nào cũng được một thiết bị hỗ trợ (ví dụ: WEAR cho các thiết bị không phải Wear OS).

Bạn không bắt buộc phải triển khai HAL dumpstate. Tất cả thiết bị mới khởi chạy với Android 11 PHẢI triển khai IDumpstateDevice 1.1 if they implementation the Dumpstate HAL. Các thiết bị đã triển khai IDumpstateDevice 1.0 trước Android 11 sẽ tương đối dễ dàng nâng cấp lên 1.1 và bạn nên làm như vậy vì việc này giúp giảm đáng kể lượng thông tin cá nhân không liên quan có trong báo cáo lỗi.

Tính năng này phụ thuộc vào các thay đổi về trạng thái tệp báo lỗi cũng có trong Android 11, nằm trong frameworks/native/cmds/dumpstate.

Việc triển khai HAL này có thể yêu cầu một số thay đổi về SEPolicy đối với một số thuộc tính hệ thống, tệp, v.v. để mọi thứ hoạt động đầy đủ và sẽ yêu cầu phối hợp với các nhà cung cấp để kết xuất tất cả thông tin liên quan vào báo cáo lỗi.

Tuỳ chỉnh

Người dùng thiết bị có thể bật hoặc tắt tính năng đăng nhập của nhà cung cấp thông qua phần cài đặt của nhà phát triển. Khi bị tắt, dumpstateBoard_1_1 vẫn có thể xuất ra thông tin tối thiểu cần thiết do OEM xác định. Việc tắt tính năng ghi nhật ký của nhà cung cấp sẽ khiến IDumpstateDevice::dumpstateBoard chỉ thêm thông tin cần thiết vào báo cáo lỗi, còn khi bật tính năng này, mọi thông tin mà OEM chọn sẽ được thêm vào.

Ví dụ: bạn có thể sửa đổi dumpstate.cpp (gọi các phương thức HAL IDumpstateDevice) để tăng thời gian chờ cho dumpstateBoard hoàn tất. Tuy nhiên, logic chính của dumpstate.cpp sẽ không thay đổi.

Thời gian chờ có thể là bất kỳ giá trị nào, nhưng không được làm tăng đáng kể thời gian hoàn tất báo cáo lỗi. Đặc biệt, DumpstateMode::CONNECTIVITY rất nhạy cảm về thời gian và cần chạy nhanh nhất có thể để thu thập tất cả nhật ký modem/Wi-Fi/mạng có liên quan.

Xác nhận kết quả

Có một kiểm thử VTS cho việc triển khai IDumpstateDevice và có các kiểm thử đơn vị chức năng cho chức năng BugreportManager chung.

Trường hợp kiểm thử thủ công được đề xuất là frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java.