Внедрение ведения журнала поставщиков с ограниченной областью действия

В Android 11 добавлен новый HAL, IDumpstateDevice (версия 1.1). Этот HAL предоставляет новые методы для более узкого охвата журналов поставщиков, которые включаются в стандартные отчеты об ошибках, а также позволяет пользовательским сборкам включать и выключать ведение журнала поставщика (по умолчанию для пользовательских сборок отключено). Это дает OEM-производителям больший контроль над тем, что включается в определенные типы отчетов об ошибках.

Эта функция влияет на OEM-производителей, если они решат реализовать этот необязательный HAL. Это может повлиять на SoC, в зависимости от того, что OEM решит предоставить с помощью этого HAL. Ожидаемого воздействия на перевозчиков не ожидается.

То, что вы включаете в отчеты об ошибках, зависит от того, какую информацию вы считаете важной для отладки, но, как правило, чем больше подробностей, тем лучше.

Примеры и источник

Существует реализация по умолчанию (устаревшей) версии 1.0 IDumpstateDevice, которая показывает пример использования библиотеки утилиты dumpstate: frameworks/native/cmds/dumpstate/DumpstateUtil.h . Также существует реализация HAL версии 1.1 для Cuttlefish: device/google/cuttlefish/guest/monitoring/dumpstate_ext/* .

Исходный код находится здесь:

Выполнение

Чтобы реализовать этот HAL, реализуйте интерфейс android.hardware.dumpstate@1.1::IDumpstateDevice HAL. Существует много возможных значений DumpstateMode , но не все из них, вероятно, будут поддерживаться одним устройством (например, WEAR для устройств без Wear OS).

Реализация HAL с состоянием дампа не является обязательной. Все новые устройства, запускаемые с Android 11, ДОЛЖНЫ реализовывать IDumpstateDevice 1.1, если они реализуют Dumpstate HAL. Устройства, которые уже внедрили IDumpstateDevice 1.0 до Android 11, должны быть относительно легко обновлены до версии 1.1, и это настоятельно рекомендуется, так как это значительно уменьшает количество посторонней личной информации, включенной в отчеты об ошибках.

Эта функция зависит от основных изменений состояния дампа, также включенных в 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 .