Android 11은 새로운 HAL인 IDumpstateDevice(버전 1.1)를 추가합니다. 이 HAL은 표준 버그 보고서에 포함된 공급업체 로그의 범위를 더욱 엄격하게 지정하고 사용자 빌드에서 공급업체 로깅을 켜고 끌 수 있도록(사용자 빌드의 기본값은 꺼짐) 새로운 방법을 제공합니다. 이를 통해 OEM은 특정 유형의 버그 보고서에 포함되는 항목을 더 잘 제어할 수 있습니다.
이 기능은 OEM이 이 선택적 HAL을 구현하기로 선택한 경우 영향을 미칩니다. OEM이 이 HAL로 노출하기로 선택한 항목에 따라 SoC가 영향을 받을 수 있습니다. 이동통신사에 대한 예상되는 영향은 없습니다.
버그 보고서에 포함하는 내용은 디버깅과 관련하여 찾은 정보에 따라 다르지만 일반적으로 더 자세한 정보가 더 좋습니다.
예제 및 소스
dumpstate util 라이브러리의 사용 예를 보여주는 (사용되지 않는) 1.0 버전의 IDumpstateDevice 기본 구현이 있습니다. frameworks/native/cmds/dumpstate/DumpstateUtil.h
. 1.1 HAL의 Cuttlefish 구현도 있습니다. device/google/cuttlefish/guest/monitoring/dumpstate_ext/*
.
소스 코드는 다음 위치에 있습니다.
- HAL 파일은
hardware/interfaces/dumpstate/1.1/
아래에 있습니다. - 버그 보고서 내용을 제어하는 dumpstate 네이티브 코드는
frameworks/native/cmds/dumpstate/
아래에 있습니다.
구현
이 HAL을 구현하려면 android.hardware.dumpstate@1.1::IDumpstateDevice
HAL 인터페이스를 구현하세요. 가능한 DumpstateMode
값이 많이 있지만 단일 장치에서 모든 값이 지원되는 것은 아닙니다(예: 비Wear OS 장치의 경우 WEAR).
dumpstate HAL 구현은 선택 사항입니다. Android 11로 출시되는 모든 새 기기는 Dumpstate HAL을 구현하는 경우 IDumpstateDevice 1.1을 구현해야 합니다(MUST). Android 11 이전에 이미 IDumpstateDevice 1.0을 구현한 기기는 1.1로 업그레이드하기가 비교적 쉬워야 하며, 그렇게 하면 버그 보고서에 포함된 외부 개인 정보의 양이 크게 줄어들기 때문에 강력히 권장됩니다.
이 기능은 frameworks/native/cmds/dumpstate
아래에 있는 Android 11에도 포함된 핵심 dumpstate 변경 사항에 따라 다릅니다.
이 HAL을 구현하려면 특정 시스템 속성, 파일 등에 대한 일부 SEPolicy 변경이 필요할 수 있으며 모든 관련 정보를 버그 보고서에 덤프하려면 공급업체와 조정해야 합니다.
커스터마이징
장치 사용자는 개발자 설정을 사용하여 공급업체 로그온을 켜거나 끌 수 있습니다. 꺼져 있을 때 dumpstateBoard_1_1
은 OEM이 결정한 최소한의 필수 정보를 계속 출력할 수 있습니다. 공급업체 로그를 끄면 IDumpstateDevice::dumpstateBoard
가 버그 보고서에 필수 정보만 추가하고, 이 기능을 켜면 OEM이 선택한 모든 정보가 포함됩니다.
예를 들어, dumpstateBoard
가 완료되도록 지정된 시간 초과를 늘리기 위해 dumpstate.cpp
(IDumpstateDevice HAL 메서드를 호출함)를 수정할 수 있습니다. 그러나 dumpstate.cpp
의 핵심 논리는 변경되지 않은 상태로 유지되어야 합니다.
시간 초과는 어떤 값이든 될 수 있지만 버그 보고서를 완료하는 데 걸리는 시간을 극적으로 증가시키지 않아야 합니다. 특히 DumpstateMode::CONNECTIVITY
는 시간에 매우 민감하며 모든 관련 모뎀/Wi-Fi/네트워킹 로그를 수집하기 위해 최대한 빨리 실행해야 합니다.
확인
IDumpstateDevice 구현을 위한 VTS 테스트가 있고 일반적인 BugreportManager
기능을 위한 기능 단위 테스트가 있습니다.
권장되는 수동 테스트 케이스는 frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
입니다.