Android 11 добавляет новый HAL, IDumpstateDevice (версия 1.1). Этот HAL предоставляет новые методы для более узкого охвата журналов поставщиков, которые включены в стандартные отчеты об ошибках, а также позволяет пользовательским сборкам включать и выключать ведение журналов поставщиков (по умолчанию для пользовательских сборок отключено). Это дает OEM-производителям больше контроля над тем, что включается в определенные типы отчетов об ошибках.
Эта функция влияет на OEM-производителей, если они решат внедрить этот дополнительный HAL. SoC могут быть затронуты в зависимости от того, что OEM решит раскрыть с помощью этого HAL. Ожидается, что влияние на операторов не будет.
Содержание отчетов об ошибках зависит от того, какую информацию вы считаете важной для отладки, но, как правило, чем подробнее информация, тем лучше.
Примеры и источник
Существует реализация по умолчанию (устаревшей) версии 1.0 IDumpstateDevice, которая показывает пример использования библиотеки утилит dumpstate: frameworks/native/cmds/dumpstate/DumpstateUtil.h
. Также существует реализация Cuttlefish HAL 1.1: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*
.
Исходный код находится здесь:
- Файлы HAL находятся в папке
hardware/interfaces/dumpstate/1.1/
. - Собственный код dumpstate, который управляет содержимым отчетов об ошибках, находится в
frameworks/native/cmds/dumpstate/
.
Выполнение
Для реализации этого HAL, реализуйте интерфейс HAL android.hardware.dumpstate@1.1::IDumpstateDevice
. Существует много возможных значений DumpstateMode
, но не все они, вероятно, будут поддерживаться одним устройством (например, WEAR для устройств, отличных от Wear OS).
Реализация dumpstate HAL необязательна. Все новые устройства, запускаемые с Android 11, ДОЛЖНЫ реализовывать IDumpstateDevice 1.1, если они реализуют Dumpstate HAL. Устройства, которые уже реализовали IDumpstateDevice 1.0 до Android 11, должны быть относительно легко обновлены до 1.1, и это настоятельно рекомендуется сделать, поскольку это значительно сокращает объем посторонней личной информации, включаемой в отчеты об ошибках.
Эта функция зависит от основных изменений dumpstate, также включенных в Android 11 и расположенных в frameworks/native/cmds/dumpstate
.
Реализация этого HAL, вероятно, потребует внесения некоторых изменений в SEPolicy для определенных системных свойств, файлов и т. д., чтобы все заработало как надо, а также координации с поставщиками для внесения всей соответствующей информации в отчеты об ошибках.
Настройка
Пользователь устройства может включать и выключать регистрацию поставщика с помощью настроек разработчика. Когда она выключена, dumpstateBoard_1_1
может по-прежнему выводить минимальную существенную информацию, определенную OEM. Отключение регистрации поставщика заставляет IDumpstateDevice::dumpstateBoard
добавлять только существенную информацию в отчет об ошибке, тогда как включение включает любую информацию, которую выбирает OEM.
Например, вы можете изменить dumpstate.cpp
(который вызывает методы HAL IDumpstateDevice), чтобы увеличить время ожидания, отведенное для завершения dumpstateBoard
. Однако основная логика dumpstate.cpp
должна остаться неизменной.
Тайм-ауты могут иметь любое значение, но они не должны значительно увеличивать время, необходимое для завершения отчета об ошибке. В частности, DumpstateMode::CONNECTIVITY
очень чувствителен ко времени и должен работать как можно быстрее, чтобы собрать все соответствующие журналы модема/Wi-Fi/сети.
Проверка
Существует тест VTS для реализации IDumpstateDevice, а также функциональные модульные тесты для общей функциональности BugreportManager
.
Рекомендуемый ручной тестовый сценарий — frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
.