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"действительно ценятся.
0 ответов
Так что на ваш вопрос было:
Мы очень ценим любую информацию о том, "Почему разрешить UntaggedSockets() было скрыто в API 28".
Мой ответ (это хороший вопрос! XD). Я думаю, что для StictMode нужен как минимум хороший JavaDoc, о котором мы не просим слишком многого.
Хорошая новость для вас заключается в том, что есть решение этой проблемы, основанное на новом 28-API, и вот мой фрагмент кода:https://gist.github.com/houssemzaier/cf69f9a614f9550408872349e5798e0b
Хорошего дня!