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

Android 11 bổ sung một HAL mới, IDumpstateDevice (phiên bản 1.1). HAL này cung cấp các phương thức mới để giới hạn chặt chẽ hơn các nhật ký của nhà cung cấp có trong báo cáo lỗi tiêu chuẩn, cũng như cho phép các bản dựng người dùng bật và tắt tính năng ghi nhật ký của nhà cung cấp (theo mặc định, tính năng này sẽ tắt đối với các bản dựng người dùng). Điều này giúp các OEM có thêm quyền kiểm soát đố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 sẽ ảnh hưởng đến các OEM nếu họ chọn triển khai HAL không bắt buộc này. Các SoC có thể bị ảnh hưởng, tuỳ thuộc vào những gì OEM chọn hiển thị bằng HAL này. Các hãng vận chuyển 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 mà bạn cho là có liên quan đến việc 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 quy trình triển khai mặc định của phiên bản 1.0 (không dùng nữa) của IDumpstateDevice cho thấy 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 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 tất cả đều được một thiết bị duy nhất 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 ra mắt cùng Android 11 ĐỀU PHẢI triển khai IDumpstateDevice 1.1 nếu triển khai HAL Dumpstate. 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 riêng tư 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 cốt lõi của dumpstate 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 để chuyển 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 ghi nhật ký của nhà cung cấp bằng chế độ cài đặt dành cho nhà phát triển. Khi tắt, dumpstateBoard_1_1 vẫn có thể xuất thông tin tối thiểu cần thiết theo quyết định của OEM. Khi bạn tắt tính năng ghi nhật ký của nhà cung cấp, IDumpstateDevice::dumpstateBoard sẽ chỉ thêm thông tin cần thiết vào báo cáo lỗi, còn khi bạn bật tính năng này, IDumpstateDevice::dumpstateBoard sẽ thêm mọi thông tin mà OEM chọn.

Bạn có thể sửa đổi dumpstate.cpp (gọi các phương thức HAL IDumpstateDevice), chẳng hạn như tăng thời gian chờ được cung cấp cho dumpstateBoard để hoàn tất. Tuy nhiên, logic cốt lõi 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 tăng đáng kể thời gian hoàn thành báo cáo lỗi. Cụ thể, 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ý liên quan về modem/Wi-Fi/mạng.

Xác nhận kết quả

Có một bài kiểm thử VTS cho việc triển khai IDumpstateDevice và có các bài 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.