StrictMode: как отключить "Обнаружен непомеченный сокет" в Android для targetSdk >= 28

Я пытаюсь отключить одну из проверок Android StrictMode - обнаружение нетегированных сокетов.

У меня есть несколько причин сделать это:

  • Некоторые библиотеки, используемые в нашем приложении, например, Crashlytics / Picasso и т. Д., Используют OkHttp внутренне, а StrictMode обнаруживает проблему с тегами без тегов в коде OkHttp (у меня нет доступа к коду сторонних библиотек, чтобы исправить эту проблему)

  • Мне нужно очистить свои журналы от ошибок сокета без тегов строгого режима, которые я не могу исправить, чтобы удалить шум для обнаружения других проблем StrictMode

Чтобы включить VmPolicy Мы используем метод VmPolicy.Builder.detectAll()

Просматривая источники StrictMode, я нашел метод VmPolicy.Builder.permitUntaggedSockets, но он помечен как @hidden и не может использоваться на API = 28

Единственное решение этой проблемы я нашел, чтобы скопировать detectAll() тело метода в мой код и удалить вызов detectUntaggedSockets() но он кажется мне подверженным ошибкам и слабо обслуживаемому.

Может быть, кто-то может предложить лучшее решение описанной проблемы?

Любая информация о "Почему permitUntaggedSockets() стали скрыты в API 28"действительно ценятся.

Crashlytics: подробности о проблеме StrictMode

OkHttp: отчет об ошибке Untagged socket

0 ответов

Так что на ваш вопрос было:

Мы очень ценим любую информацию о том, "Почему разрешить UntaggedSockets() было скрыто в API 28".

Мой ответ (это хороший вопрос! XD). Я думаю, что для StictMode нужен как минимум хороший JavaDoc, о котором мы не просим слишком многого.

Хорошая новость для вас заключается в том, что есть решение этой проблемы, основанное на новом 28-API, и вот мой фрагмент кода:https://gist.github.com/houssemzaier/cf69f9a614f9550408872349e5798e0b

Хорошего дня!

Другие вопросы по тегам