Как Firebase Performance Monitoring перехватывает исходящие HTTP-запросы в Android?

Из справочного документа firebase https://firebase.google.com/docs/perf-mon/network-traces?platform=android, в нем говорится

Для всех типов приложений Мониторинг производительности автоматически собирает трассировку для каждого сетевого запроса, выданного вашим приложением, который называется трассировкой сетевого запроса HTTP / S. Мониторинг производительности автоматически собирает метрики для сетевых запросов, которые используют следующие сетевые библиотеки: OkHttp3, Java's URLConnection, Apache HttpClient.

Как они автоматически отслеживают http-запросы без использования перехватчиков? используют ли они какие-либо манипуляции с байтовым кодом для их отслеживания?


person Murugappan Vr    schedule 26.10.2020    source источник


Ответы (1)


Да, он использует манипуляции с байт-кодом на Android. Это то, что плагин делает во время сборки. Он находит все вхождения вызовов API, которые выглядят как HTTP-запросы (URLConnection, Apache HTTPClient и OKHTTP), и украшает эти вызовы объектом, который отслеживает их использование во время выполнения.

Если вы хотите глубже понять, как это работает, посмотрите это выступление.

person Doug Stevenson    schedule 26.10.2020
comment
Спасибо, @Doug. Просто любопытно, есть ли манипуляции с байтовым кодом для быстрого и объективного c? Как firebase автоматически отслеживает URLSession и URLConnection для приложений iOS? - person Murugappan Vr; 26.10.2020
comment
Если у вас есть новый вопрос, опубликуйте его отдельно. iOS работает иначе. - person Doug Stevenson; 26.10.2020