Triển khai ghi nhật ký nhà cung cấp có phạm vi

Android 11 bổ sung HAL mới, IDumpstateDevice (phiên bản 1.1). HAL này đưa ra các phương pháp mới cho nhật ký nhà cung cấp có phạm vi chặt chẽ hơn được bao gồm trong các 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 đăng nhập của nhà cung cấp (mặc định cho các bản dựng của người dùng bị 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 gì được đưa vào các loại báo cáo lỗi cụ thể.

Tính năng này sẽ tác động đến các OEM nếu họ chọn triển khai HAL tùy chọn này. SoC có thể bị ảnh hưởng, tùy thuộc vào những gì OEM chọn hiển thị với HAL này. Không có tác động dự kiến ​​đối với các nhà vận chuyển.

Nội dung bạn đưa vào báo cáo lỗi tùy thuộc vào thông tin bạn thấy có liên quan để gỡ lỗi, nhưng nói chung chi tiết hơn sẽ tốt hơn.

Ví dụ và nguồn

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

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

Thực hiện

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

Việc triển khai HAL dumpstate là tùy chọn. Tất cả các thiết bị mới khởi chạy cùng Android 11 PHẢI triển khai IDumpstateDevice 1.1 nếu chúng triển khai 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 thực sự nên làm như vậy vì nó 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 những thay đổi về trạng thái kết xuất cốt 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ể sẽ yêu cầu một số thay đổi về Chính sách SEP đối với một số thuộc tính, tệp hệ thống, v.v. để mọi thứ hoạt động hoàn toàn và sẽ yêu cầu phối hợp với các nhà cung cấp để đưa tất cả thông tin liên quan vào báo cáo lỗi.

Tùy 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 bằng cách sử dụng cài đặt của nhà phát triển. Khi tắt, dumpstateBoard_1_1 vẫn có thể xuất ra thông tin cần thiết tối thiểu do OEM xác định. Việc tắt tính năng đăng nhập 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, trong khi việc bật tính năng này sẽ bao gồm mọi thông tin mà OEM chọn.

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

Thời gian chờ có thể có bất kỳ giá trị nào nhưng chúng không làm tăng đáng kể thời gian hoàn thành 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ý mạng/Wi-Fi/modem có liên quan.

Thẩm định

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

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 .