Introdução ao Monitoramento de desempenho para Android

Antes de começar

Adicione o Firebase ao projeto para Android, caso ainda não tenha feito isso.

Etapa 1: adicionar o SDK do Performance Monitoring ao seu app

Depois que o SDK do Performance Monitoring for adicionado, o Firebase começará a coletar dados automaticamente sobre a renderização de tela do app, além de coletar dados relacionados ao ciclo de vida do app (como o horário de início do app). Para permitir que o Firebase monitore solicitações de rede, também é preciso adicionar o plug-in do Gradle para o Performance Monitoring (próxima etapa).

  1. No arquivo Gradle do módulo (nível do app) (geralmente <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle), adicione a dependência da biblioteca do Performance Monitoring para Android. Recomendamos o uso do Firebase Android BoM para lidar com o controle de versões da biblioteca.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.7.0"))
    
        // Add the dependency for the Performance Monitoring library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-perf")
    }

    Com o Firebase Android BoM, seu app sempre vai usar versões compatíveis das bibliotecas do Firebase para Android.

    (Alternativa) Adicionar dependências das bibliotecas do Firebase sem usar o BoM

    Se você preferir não usar o Firebase BoM, especifique cada versão das bibliotecas do Firebase na linha de dependência correspondente.

    Se você usa várias bibliotecas do Firebase no app, recomendamos utilizar o BoM para gerenciar as versões delas, porque isso ajuda a garantir a compatibilidade de todas as bibliotecas.

    dependencies {
        // Add the dependency for the Performance Monitoring library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-perf:21.0.3")
    }
    Está procurando um módulo de biblioteca específico do Kotlin? A partir de outubro de 2023 (Firebase BoM 32.5.0), os desenvolvedores Kotlin e Java poderão depender do módulo da biblioteca principal. Para mais detalhes, consulte Perguntas frequentes sobre essa iniciativa).

  2. Recompile o app.

Etapa 2: adicionar ao seu app o plug-in do Gradle para o Performance Monitoring

Depois que o plug-in do Gradle para o Performance Monitoring for adicionado, o Firebase começará a coletar dados automaticamente sobre as solicitações de rede HTTP/S. Com esse plug-in, também é possível instrumentar traces de código personalizado usando a anotação @AddTrace.

  1. No arquivo do Gradle no nível raiz (para envolvidos no projeto) (<project>/build.gradle.kts ou <project>/build.gradle), adicione o plug-in do Gradle para o Performance Monitoring:

    Kotlin

    plugins {
        // To benefit from the latest Performance Monitoring plugin features,
        // update your Android Gradle plugin dependency to at least v3.4.0
        id("com.android.application") version "7.3.0" apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id("com.google.gms.google-services") version "4.4.2" apply false
    
        // Add the dependency for the Performance Monitoring Gradle plugin
        id("com.google.firebase.firebase-perf") version "1.4.2" apply false
    }

    Groovy

    plugins {
        // To benefit from the latest Performance Monitoring plugin features,
        // update your Android Gradle plugin dependency to at least v3.4.0
        id 'com.android.application' version '7.3.0' apply false
    
        // Make sure that you have the Google services Gradle plugin dependency
        id 'com.google.gms.google-services' version '4.4.2' apply false
    
        // Add the dependency for the Performance Monitoring Gradle plugin
        id 'com.google.firebase.firebase-perf' version '1.4.2' apply false
    }
  2. No arquivo do Gradle do módulo (nível do app) (geralmente <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle), adicione o plug-in do Gradle para o Performance Monitoring:

    Kotlin

    plugins {
        id("com.android.application")
    
        // Make sure that you have the Google services Gradle plugin
        id("com.google.gms.google-services")
    
        // Add the Performance Monitoring Gradle plugin
        id("com.google.firebase.firebase-perf")
        ...
    }

    Groovy

    plugins {
        id 'com.android.application'
    
        // Make sure that you have the Google services Gradle plugin
        id 'com.google.gms.google-services'
    
        // Add the Performance Monitoring Gradle plugin
        id 'com.google.firebase.firebase-perf'
        ...
    }
  3. Recompile o app.

Etapa 3: gerar eventos de desempenho para a exibição inicial de dados

O Firebase começa a processar os eventos quando você adiciona o SDK ao seu aplicativo. Se você ainda estiver desenvolvendo localmente, interaja com seu aplicativo para gerar eventos para coleta e processamento de dados iniciais.

  1. Gere eventos alternando o plano de fundo e o primeiro plano do app várias vezes. Interaja com o app navegando pelas telas e/ou acionando solicitações de rede.

  2. Acesse o painel Desempenho do console do Firebase. Você verá sua exibição de dados inicial em alguns minutos.

    Se você não vir uma exibição dos seus dados iniciais, veja as dicas de solução de problemas.

Etapa 4 (opcional): ver se há eventos de desempenho nas mensagens de registro

  1. Ative a geração de registros de depuração do Performance Monitoring no tempo de build. Para fazer isso, adicione um elemento <meta-data> ao arquivo AndroidManifest.xml do seu app:

    <application>
        <meta-data
          android:name="firebase_performance_logcat_enabled"
          android:value="true" />
    </application>
  2. Verifique se há mensagens de erro nas mensagens de registro.

  3. O Performance Monitoring marca as mensagens de registro com FirebasePerformance. Ao usar o filtro logcat, você vê especificamente a geração de registros do trace de duração e as solicitações de rede HTTP/S. Basta executar o seguinte comando:

    adb logcat -s FirebasePerformance
  4. Verifique os seguintes tipos de registros que indicam que o Performance Monitoring está registrando eventos de desempenho:

    • Logging trace metric: TRACE_NAME, FIREBASE_PERFORMANCE_CONSOLE_URL
    • Logging network request trace: URL
  5. Clique no URL para ver seus dados no Console do Firebase. Pode levar alguns instantes até que os dados sejam atualizados no painel.

Se o app não estiver registrando eventos de desempenho, veja as dicas de solução de problemas.

Etapa 5 (opcional): adicionar monitoramento personalizado para código específico

Para monitorar os dados de desempenho associados a um código específico no app, instrumente traces de código personalizados.

Com um trace de código personalizado, é possível avaliar quanto tempo o app leva para concluir uma tarefa específica ou um conjunto de tarefas, como carregar um conjunto de imagens ou consultar seu banco de dados. A métrica padrão de um trace de código personalizado é a duração, mas também é possível adicionar métricas personalizadas, como ocorrências em cache e avisos de memória.

No seu código, você define o início e o fim de um trace de código personalizado (e adiciona a métrica personalizada que quiser) usando a API fornecida pelo SDK do Performance Monitoring. Em apps Android, também é possível monitorar a duração de métodos específicos usando a anotação @AddTrace.

Acesse Adicionar monitoramento para códigos específicos para saber mais sobre esses recursos e como adicioná-los ao seu app.

Etapa 6: implantar seu app e analisar os resultados

Depois de validar o Performance Monitoring usando um ou mais dispositivos de teste, será possível implantar a versão atualizada do app para os usuários.

É possível monitorar os dados de desempenho no painel Desempenho do console do Firebase.

Problemas conhecidos

  • O plug-in do Gradle v1.1.0 para o Performance Monitoring pode causar uma incompatibilidade nas dependências do Guava, resultando no seguinte erro:

    Error:Execution failed for task ':app:packageInstantRunResourcesDebug'.
    > com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;

    Se você encontrar esse erro, faça o seguinte:

    • Faça upgrade do plug-in do Performance Monitoring para a v1.1.1 ou posterior. A versão mais recente é a v1.4.2.

    • Substitua a linha de dependência do plug-in do Performance Monitoring no arquivo do Gradle no nível raiz (para envolvidos no projeto) (<project>/build.gradle.kts ou <project>/build.gradle) da seguinte maneira:

      Kotlin

      buildscript {
        // ...
      
        dependencies {
          // ...
      
          // Replace the standard Performance Monitoring plugin dependency line, as follows:
          classpath("com.google.firebase:perf-plugin:1.1.0") {
              exclude(group = "com.google.guava", module = "guava-jdk5")
          }
        }
      }

      Groovy

      buildscript {
        // ...
      
        dependencies {
          // ...
      
          // Replace the standard Performance Monitoring plugin dependency line, as follows:
          classpath('com.google.firebase:perf-plugin:1.1.0') {
              exclude group: 'com.google.guava', module: 'guava-jdk5'
          }
        }
      }
  • O Performance Monitoring informa o tamanho total do payload para solicitações de rede HTTP com base no valor definido no cabeçalho HTTP content-length. Esse valor pode não ser sempre exato.

  • O Performance Monitoring é compatível apenas com o processo principal em apps Android de vários processos.

Próximas etapas