Wprowadzenie do Monitorowania wydajności na urządzeniach z Androidem

Zanim zaczniesz

Dodaj Firebase do projektu aplikacji na Androida, jeśli nie korzystasz w nim jeszcze z tej usługi.

Krok 1. Dodaj pakiet SDK Performance Monitoring do aplikacji.

Po dodaniu pakietu SDK Performance Monitoring Firebase automatycznie zacznie zbierać dane dotyczące renderowania ekranu aplikacji oraz dane związane z jej cyklem życia (np. czas uruchamiania aplikacji). Aby umożliwić Firebase monitorowanie żądań sieciowych, musisz też dodać wtyczkę Performance Monitoring Gradle (następny krok).

  1. W pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle) dodaj zależność z biblioteką Performance Monitoring na Androida. Zalecamy używanie Firebase Android BoM do kontrolowania obsługi wersji biblioteki.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.1"))
    
        // 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")
    }

    Gdy korzystasz z Firebase Android BoM, aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.

    (Alternatywa)  Dodaj zależności biblioteki Firebase bez używania BoM

    Jeśli nie zdecydujesz się na użycie Firebase BoM, musisz określić każdą wersję biblioteki Firebase w jej wierszu zależności.

    Jeśli w aplikacji używasz kilku bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami bibliotek, co zapewni zgodność wszystkich wersji.

    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:23.0.1")
    }

  2. Skompiluj ponownie aplikację.

Krok 2. Dodaj do aplikacji wtyczkę Performance Monitoring do Gradle

Po dodaniu wtyczki Gradle Performance Monitoring Firebase automatycznie zacznie zbierać dane dotyczące żądań sieciowych HTTP/S. Wtyczka umożliwia też instrumentowanie niestandardowych śladów kodu za pomocą adnotacji@AddTrace.

  1. W pliku Gradle na poziomie głównym (poziomie projektu) (<project>/build.gradle.kts lub <project>/build.gradle) dodaj wtyczkę Performance Monitoring do Gradle:

    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.5.0" apply false
    
        // Add the dependency for the Performance Monitoring Gradle plugin
        id("com.google.firebase.firebase-perf") version "2.0.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.5.0' apply false
    
        // Add the dependency for the Performance Monitoring Gradle plugin
        id 'com.google.firebase.firebase-perf' version '2.0.2' apply false
    }
  2. W pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle) dodaj wtyczkę Performance Monitoring do Gradle:

    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. Skompiluj ponownie aplikację.

Krok 3. Wygeneruj zdarzenia wydajności, aby wyświetlić początkowe dane

Firebase zacznie przetwarzać zdarzenia, gdy dodasz pakiet SDK do aplikacji. Jeśli nadal pracujesz nad aplikacją lokalnie, wejdź z nią w interakcję, aby wygenerować zdarzenia na potrzeby początkowego zbierania i przetwarzania danych.

  1. Wygeneruj zdarzenia, kilkakrotnie przełączając aplikację między tłem a pierwszym planem, wchodząc z nią w interakcje przez przechodzenie między ekranami lub wywołując żądania sieciowe.

  2. Otwórz panel Wydajność w konsoli Firebase. W ciągu kilku minut powinny się wyświetlić pierwsze dane.

    Jeśli nie widzisz danych początkowych, zapoznaj się ze wskazówkami dotyczącymi rozwiązywania problemów.

Krok 4. (Opcjonalnie) Wyświetlanie komunikatów logu dotyczących zdarzeń związanych z wydajnością

  1. Włącz logowanie debugowania dla Performance Monitoring podczas kompilacji, dodając element <meta-data> do pliku AndroidManifest.xml aplikacji w ten sposób:

    <application>
        <meta-data
          android:name="firebase_performance_logcat_enabled"
          android:value="true" />
    </application>
  2. Sprawdź, czy w komunikatach logu nie ma komunikatów o błędach.

  3. Performance Monitoring oznacza komunikaty logu tagiem FirebasePerformance. Korzystając z filtrowania logcat, możesz wyświetlić ślad czasu trwania i logowanie żądań sieciowych HTTP/S, uruchamiając to polecenie:

    adb logcat -s FirebasePerformance
  4. Sprawdź, czy występują te typy logów, które wskazują, że Performance Monitoring rejestruje zdarzenia związane z wydajnością:

    • Logging trace metric: TRACE_NAME, FIREBASE_PERFORMANCE_CONSOLE_URL
    • Logging network request trace: URL
  5. Kliknij adres URL, aby wyświetlić dane w konsoli Firebase. Zanim dane zostaną zaktualizowane w panelu, może minąć kilka minut.

Jeśli aplikacja nie rejestruje zdarzeń związanych z wydajnością, zapoznaj się ze wskazówkami dotyczącymi rozwiązywania problemów.

Krok 5. (Opcjonalnie) Dodaj niestandardowe monitorowanie określonego kodu

Aby monitorować dane o skuteczności powiązane z konkretnym kodem w aplikacji, możesz instrumentować ślady niestandardowego kodu.

Dzięki niestandardowemu śledzeniu kodu możesz mierzyć, ile czasu zajmuje aplikacji wykonanie określonego zadania lub zestawu zadań, np. wczytanie zestawu obrazów lub wysłanie zapytania do bazy danych. Domyślnym wskaźnikiem niestandardowego śladu kodu jest czas jego trwania, ale możesz też dodać wskaźniki niestandardowe, takie jak trafienia w pamięci podręcznej i ostrzeżenia o pamięci.

W kodzie definiujesz początek i koniec niestandardowego śladu kodu (oraz dodajesz dowolne niestandardowe dane) za pomocą interfejsu API udostępnianego przez pakiet SDK Performance Monitoring. W przypadku aplikacji na Androida możesz też monitorować czas trwania określonych metod, korzystając z adnotacji@AddTrace.

Aby dowiedzieć się więcej o tych funkcjach i sposobie ich dodawania do aplikacji, przeczytaj artykuł Dodawanie monitorowania konkretnego kodu.

Krok 6. Wdróż aplikację i sprawdź wyniki

Po zweryfikowaniu Performance Monitoring na co najmniej 1 urządzeniu testowym możesz wdrożyć zaktualizowaną wersję aplikacji dla użytkowników.

Dane o skuteczności możesz monitorować w panelu Wydajność w konsoli Firebase.

Znane problemy

  • Wtyczka Performance Monitoring do obsługi Gradle w wersji 1.1.0 może powodować niezgodność zależności Guava, co skutkuje tym błędem:

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

    Jeśli widzisz ten błąd, możesz:

    • Zaktualizuj wtyczkę Performance Monitoring do wersji 1.1.1 lub nowszej (najnowsza wersja to 2.0.2).

    • Zastąp wiersz zależności wtyczki Performance Monitoring w pliku Gradle na poziomie głównym (na poziomie projektu) (<project>/build.gradle.kts lub <project>/build.gradle) w ten sposób:

      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'
          }
        }
      }
  • Performance Monitoring raportuje łączny rozmiar ładunku żądań sieciowych HTTP na podstawie wartości ustawionej w nagłówku HTTP content-length. Ta wartość nie zawsze jest dokładna.

  • Performance Monitoring obsługuje tylko główny proces w aplikacjach na Androida z wieloma procesami.

Dalsze kroki