범위 지정 공급업체 로깅 구현

Android 11에서는 새로운 HAL인 IDumpstateDevice(버전 1.1)를 추가했습니다. 이 HAL은 표준 버그 신고에 포함된 공급업체 로그의 범위를 더 긴밀하게 지정할 뿐만 아니라, 사용자 빌드가 공급업체 로깅을 사용 설정 또는 사용 중지할 수 있도록 하는(사용자 빌드의 기본값은 사용 중지) 새로운 메서드를 노출합니다. 이를 통해 OEM은 특정 유형의 버그 신고에 포함되는 사항을 더 세밀하게 제어할 수 있습니다.

선택사항인 이 HAL을 구현하도록 선택한 경우 이 기능은 OEM에 영향을 미칩니다. OEM이 이 HAL과 노출하기로 선택하는 내용에 따라 SoC가 영향을 받을 수 있습니다. 이동통신사에는 영향이 없습니다.

버그 신고 내용에 포함되는 것은 디버깅과 관련이 있는 정보에 따라 다르지만, 일반적으로 자세한 정보가 더 좋습니다.

예시 및 소스

dumpstate util 라이브러리 사용 예시를 보여주는 (Deprecated) 1.0의 ImpincestateDevice의 기본 구현이 있는데, frameworks/native/cmds/dumpstate/DumpstateUtil.h입니다. 1.1 HAL의 Cuttlefish 구현(device/google/cuttlefish/guest/monitoring/dumpstate_ext/*)도 있습니다.

소스 코드는 다음 위치에 있습니다.

구현

이 HAL을 구현하려면 android.hardware.dumpstate@1.1::IDumpstateDevice HAL 인터페이스를 구현합니다. 가능한 DumpstateMode 값이 많지만 단일 기기에서 지원되지 않을 수도 있습니다 (예: Wear OS가 아닌 기기의 경우 WEAR).

dumpstate HAL 구현은 선택사항입니다. Android 11로 출시되는 모든 새 기기는 dumpstate HAL을 구현하는 경우 반드시 IODStateDevice 1.1을 구현해야 합니다. Android 11 이전에 IODumstateDevice 1.0을 구현한 기기는 1.1로 쉽게 업그레이드할 수 있습니다. 버그 신고에 포함된 관련 없는 개인 정보의 양이 크게 줄어들 수 있도록 그렇게 하는 것이 좋습니다.

이 기능은 frameworks/native/cmds/dumpstate 아래에 있는 Android 11에도 포함된 핵심 dumpstate 변경사항에 따라 다릅니다.

이 HAL을 구현하려면 특정 시스템 속성, 파일 등에 대한 일부 SEPolicy를 변경하여 작업을 정상적으로 수행할 수 있도록 하고, 공급업체와 협력하여 모든 관련 정보를 버그 신고에 덤프해야 합니다.

맞춤설정

기기 사용자는 개발자 설정을 사용하여 공급업체 로깅을 사용 설정하거나 사용 중지할 수 있습니다. 사용 중지된 경우에도 dumpstateBoard_1_1은 OEM에서 결정한 최소 필수 정보를 계속해서 출력할 수 있습니다. 공급업체 로깅을 사용 중지하면 IDumpstateDevice::dumpstateBoard가 버그 신고에 필수 정보만 추가합니다. 또한 사용 설정하면 OEM이 선택하는 정보가 포함됩니다.

dumpstate.cpp (예: IODstateDeviceHAL 메서드 호출)를 수정하여 dumpstateBoard가 완료하는 데 필요한 시간 제한을 늘릴 수 있습니다. 하지만 dumpstate.cpp의 핵심 로직은 변경되지 않습니다.

시간 제한은 어떤 값이든 될 수 있지만, 버그 신고 완료에 걸리는 시간이 크게 증가해서는 안 됩니다. 특히 DumpstateMode::CONNECTIVITY는 시간에 민감하며 모든 관련 모뎀/Wi-Fi/네트워킹 로그를 수집하기 위해 가능한 한 빨리 실행해야 합니다.

유효성 검사

IODstateDeviceDevice 구현에는 VTS 테스트가 있으며 일반 BugreportManager 기능의 기능 단위 테스트가 있습니다.

권장되는 수동 테스트 사례는 frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java입니다.