Inspecionar o tráfego de rede com o Network Inspector

O Network Inspector mostra a atividade de rede em tempo real em uma linha do tempo, mostrando dados enviados e recebidos. O Network Inspector permite examinar como e quando o app transfere dados e otimiza o código de forma adequada.

Para abrir o Network Inspector, siga estas etapas:

  1. Na barra de navegação do Android Studio, selecione View > Tool Windows > App Inspection. Depois que a janela de inspeção se conectar automaticamente a um processo de app, selecione Network Inspector nas guias.
    • Se ela não se conectar a um processo de app automaticamente, talvez seja necessário selecionar um de forma manual.
  2. Selecione o dispositivo e o processo de app que você quer inspecionar na janela App Inspection.

Visão geral do Network Inspector

Na parte de cima da janela do Network Inspector, é possível ver a linha do tempo de eventos. Clique e arraste para selecionar uma parte da linha do tempo e inspecionar o tráfego.

Janela do Network Inspector
Figura 1. Janela do Network Inspector.

No Painel de detalhes, o gráfico de tempo pode ajudar a identificar a ocorrência de problemas de desempenho. O início da seção amarela corresponde ao primeiro byte da solicitação enviada. O início da seção azul corresponde ao primeiro byte da resposta recebida. O final da seção azul corresponde ao byte final da resposta que está sendo recebida.

No painel abaixo da linha do tempo, selecione uma das seguintes guias para saber mais sobre a atividade da rede durante a parte selecionada da linha do tempo:

  • Connection View: lista os arquivos que foram enviados ou recebidos durante a parte selecionada da linha do tempo em todas as linhas de execução da CPU do seu app. Para cada solicitação, você pode inspecionar o tamanho, o tipo, o status e a duração da transmissão. Para classificar essa lista, clique em qualquer um dos cabeçalhos das colunas. Você também pode observar uma descrição detalhada da parte selecionada da linha do tempo, mostrando quando cada arquivo foi enviado ou recebido.
  • Thread View: mostra a atividade da rede em cada uma das linhas de execução da CPU do app. Como mostrado na Figura 2, essa visualização permite inspecionar quais linhas de execução são responsáveis pelas solicitações de rede.

    Inspeção de solicitações de rede por linha de execução do app na Thread View
    Figura 2. Inspeção de solicitações de rede por linha de execução do app na Thread View.
  • Rules View: as regras ajudam a testar o comportamento do seu app ao encontrar respostas com diferentes códigos de status, cabeçalhos e corpos. Quando você criar uma nova regra, dê um nome a ela e inclua informações sobre a origem da resposta que quer interceptar na subseção Origin. Na subseção Response, especifique onde e como modificar a resposta. Por exemplo, você pode definir a regra a ser executada nas respostas com um código de status específico e modificar esse código. Nas subseções Header rules e Body rules, crie sub-regras que adicionem ou modifiquem os cabeçalhos ou corpos de resposta. As regras são aplicadas na ordem em que estão listadas. Para escolher qual regra ativar ou desativar, marque a caixa Active ao lado de cada uma delas.

    Painéis "Rules" e "Rule Details" do Network Inspector
    Figura 3. Painéis Rules e Rule Details do Network Inspector.

Na Connection View ou na Thread View, clique em um nome de solicitação para inspecionar informações detalhadas sobre os dados enviados ou recebidos. Clique nas guias para visualizar o cabeçalho e o corpo da resposta, o cabeçalho e o corpo da solicitação ou a pilha de chamadas.

Nas guias Response e Request, clique no link View Parsed para mostrar o texto formatado. Clique no link View Source para mostrar o texto bruto.

Alternância entre texto bruto e texto formatado
Figura 4. Alternância entre texto bruto e formatado clicando no link correspondente.

Além de mostrar solicitações de rede para HttpsURLConnection, o Network Inspector também oferece suporte a OkHttp. Algumas bibliotecas de rede de terceiros, como a Retrofit, usam a OkHttp internamente. Assim, o Network Inspector permite inspecionar a atividade de rede delas. A App de exemplo Now in Android (link em inglês) usa OkHttp para as operações de rede e é um bom lugar para vê-lo em à ação.

Se estiver usando a API HttpsURLConnection, a guia Request vai mostrar apenas os cabeçalhos que você incluir no código com o método setRequestProperty, conforme mostrado no exemplo a seguir:

Kotlin

val url = URL(MY_URL_EN)
val urlConnection: HttpsURLConnection = url.openConnection() as HttpsURLConnection
...
// Sets acceptable encodings in the request header.
urlConnection.setRequestProperty("Accept-Encoding", "identity")

Java

URL url = new URL(MY_URL_EN);
HttpsURLConnection urlConnection = (HttpsURLConnection) url.openConnection();
//...
// Sets acceptable encodings in the request header.
urlConnection.setRequestProperty("Accept-Encoding", "identity");

Resolver problemas de conexão de rede

Se o Network Inspector detectar valores de tráfego, mas não puder identificar nenhuma solicitação de rede com suporte, você vai receber a seguinte mensagem de erro:

**Network Inspector Data Unavailable:** There is no information for the
  network traffic you've selected.

No momento, o Network Profiler tem suporte apenas às bibliotecas HttpsURLConnection e OkHttp para conexões de rede. Se o app usar outra biblioteca de conexão de rede, talvez não seja possível visualizar as atividades de rede no Network Profiler. Se você recebeu essa mensagem de erro, mas o app usa HttpsURLConnection ou OkHttp, informe um bug ou pesquise no Issue Tracker para incluir seu feedback em um relatório já existente relacionado ao problema. Você também pode usar esses recursos para solicitar suporte a outras bibliotecas.