Wyłącz Monitorowanie wydajności Firebase


Podczas tworzenia i testowania aplikacji może się okazać, że warto wyłączyć Performance Monitoring.

Możesz na przykład wyłączyć Performance Monitoring podczas procesu kompilacji aplikacji, aby:

  • wyłączyć niektóre funkcje Performance Monitoring (np. te udostępniane przez wtyczkę Gradle Performance Monitoring) w kompilacjach do debugowania, ale ponownie włączyć je w kompilacji do publikacji;

  • wyłączyć Performance Monitoring podczas kompilowania aplikacji, ale zezwolić aplikacji na ponowne włączenie go w czasie działania;

  • wyłączyć Performance Monitoring podczas kompilowania aplikacji i nie zezwalać aplikacji na ponowne włączenie go w czasie działania.

Możesz też skompilować aplikację z Performance Monitoring włączonym, ale użyć Firebase Remote Config, aby mieć możliwość wyłączenia (i ponownego włączenia) Performance Monitoring w aplikacji produkcyjnej. Dzięki tej opcji możesz nawet skonfigurować aplikację tak, aby użytkownicy mogli włączyć lub wyłączyć korzystanie z Performance Monitoring.

Wyłączanie Performance Monitoring podczas procesu kompilacji aplikacji

Możesz wyłączyć Performance Monitoring podczas procesu kompilacji, wyłączając wtyczkę Gradle Performance Monitoring lub wyłączając bibliotekę Performance Monitoring na Androida.

Podczas tworzenia i debugowania wyłączenie wtyczki jest przydatne, ponieważ instrumentacja przez wtyczkę może wydłużyć czas kompilacji. Możesz jednak rozważyć pozostawienie biblioteki włączonej, aby nadal móc wyświetlać dane o skuteczności z logów czasu uruchamiania aplikacji, działania aplikacji na pierwszym planie i w tle oraz wszelkich niestandardowych logów czasu w aplikacji.

Wyłączanie wtyczki Gradle Performance Monitoring

Wtyczkę Performance Monitoring możesz wyłączyć, dodając flagę instrumentationEnabled za pomocą tych opcji:

Wyłączanie wtyczki za pomocą flagi właściwości rozszerzenia

Za pomocą flagi Właściwość rozszerzenia możesz wyłączyć wtyczkę Performance Monitoring dla konkretnego wariantu kompilacji w czasie kompilacji.

  1. W pliku Gradle na poziomie głównym (na poziomie projektu) (<project>/build.gradle.kts lub <project>/build.gradle) upewnij się, że zależność wtyczki Androida do obsługi Gradle jest określona jako wersja 3.4.0 lub nowsza.

    W przypadku starszych wersji wtyczki Androida do obsługi Gradle możesz nadal wyłączyć wtyczkę Performance Monitoring dla konkretnego wariantu kompilacji, ale czas kompilacji dla tego wariantu nie zostanie całkowicie wyeliminowany.

  2. Dodaj tę flagę do pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle), a następnie ustaw ją na false, aby wyłączyć wtyczkę Performance Monitoring.

    Kotlin

    import com.google.firebase.perf.plugin.FirebasePerfExtension
    
    // ...
    
    android {
      // ...
      buildTypes {
        getByName("debug") {
          configure<FirebasePerfExtension> {
            // Set this flag to 'false' to disable @AddTrace annotation processing and
            // automatic monitoring of HTTP/S network requests
            // for a specific build variant at compile time.
            setInstrumentationEnabled(false)
          }
        }
      }
    }

    Groovy

    android {
      // ...
      buildTypes {
        debug {
          FirebasePerformance {
            // Set this flag to 'false' to disable @AddTrace annotation processing and
            // automatic monitoring of HTTP/S network requests
            // for a specific build variant at compile time.
            instrumentationEnabled false
          }
        }
      }
    }

Wyłączanie wtyczki za pomocą flagi właściwości projektu

Za pomocą flagi Właściwość projektu możesz wyłączyć wtyczkę Performance Monitoring dla wszystkich wariantów kompilacji w czasie kompilacji.

Dodaj tę flagę do pliku gradle.properties, a następnie ustaw ją na false , aby wyłączyć wtyczkę Performance Monitoring.

// ...

// Set this flag to 'false' to disable @AddTrace annotation processing and
// automatic monitoring of HTTP/S network requests
// for all build variants at compile time.
firebasePerformanceInstrumentationEnabled=false

Wyłączanie biblieky na AndroidaPerformance Monitoring

Jeśli wyłączysz bibliotekę Performance Monitoring w czasie kompilacji, możesz określić, czy aplikacja ma mieć możliwość włączenia biblioteki w czasie działania.

Wyłączanie biblioteki w czasie kompilacji, ale zezwalanie aplikacji na jej włączenie w czasie działania

Dodaj ten element <meta-data> do pliku AndroidManifest.xml aplikacji:

  <application>
    <meta-data
      android:name="firebase_performance_collection_enabled"
      android:value="false" />
  </application>

Wyłączanie biblioteki w czasie kompilacji, ale nie zezwalanie aplikacji na jej włączenie w czasie działania

Dodaj ten element <meta-data> do pliku AndroidManifest.xml aplikacji:

  <application>
    <meta-data
      android:name="firebase_performance_collection_deactivated"
      android:value="true" />
  </application>

Wyłączanie aplikacji w czasie działania za pomocą Remote Config

Firebase Remote Config umożliwia wprowadzanie zmian w zachowaniu i wyglądzie aplikacji, dlatego jest idealnym sposobem na wyłączenie Performance Monitoring w wdrożonych instancjach aplikacji.

Aby wyłączyć zbieranie danych Performance Monitoring przy następnym uruchomieniu aplikacji na Androida, użyj przykładowego kodu podanego poniżej. Więcej informacji o korzystaniu z Remote Config w aplikacji na Androida znajdziesz w artykule Korzystanie z Firebase Remote Config na Androidzie.

  1. Upewnij się, że Remote Config znajduje się w sekcji dependencies pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle):

    Kotlin

      implementation("com.google.firebase:firebase-config-ktx:23.0.1")
    

    Java

      implementation("com.google.firebase:firebase-config:23.0.1")
    
  2. Skonfiguruj Remote Config i wyłącz Performance Monitoring, jeśli perf_disable ma wartość true:

    Kotlin

    // Setup remote config
    val config = Firebase.remoteConfig
    
    // You can uncomment the following two statements to permit more fetches when
    // validating your app, but you should comment out or delete these lines before
    // distributing your app in production.
    // val configSettings = remoteConfigSettings {
    //     minimumFetchIntervalInSeconds = 3600
    // }
    // config.setConfigSettingsAsync(configSettings)
    // Load in-app defaults from an XML file that sets perf_disable to false until you update
    // values in the Firebase Console
    
    // Observe the remote config parameter "perf_disable" and disable Performance Monitoring if true
    config.setDefaultsAsync(R.xml.remote_config_defaults)
        .addOnCompleteListener { task ->
            if (task.isSuccessful) {
                Firebase.performance.isPerformanceCollectionEnabled = !config.getBoolean("perf_disable")
            } else {
                // An error occurred while setting default parameters
            }
        }

    Java

    // Setup remote config
    final FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
    
    // You can uncomment the following two statements to permit more fetches when
    // validating your app, but you should comment out or delete these lines before
    // distributing your app in production.
    // FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder()
    //       .setMinimumFetchIntervalInSeconds(3600)
    //       .build();
    // config.setConfigSettingsAsync(configSettings);
    // Load in-app defaults from an XML file that sets perf_disable to false until you update
    // values in the Firebase Console
    
    //Observe the remote config parameter "perf_disable" and disable Performance Monitoring if true
    config.setDefaultsAsync(R.xml.remote_config_defaults)
            .addOnCompleteListener(new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()) {
                        if (config.getBoolean("perf_disable")) {
                            FirebasePerformance.getInstance().setPerformanceCollectionEnabled(false);
                        } else {
                            FirebasePerformance.getInstance().setPerformanceCollectionEnabled(true);
                        }
                    } else {
                        // An error occurred while setting default parameters
                    }
                }
            });
  3. Aby pobrać i aktywować Remote Config wartości, dodaj ten kod do MainActivity.java:

    Kotlin

    // Remote Config fetches and activates parameter values from the service
    val config = Firebase.remoteConfig
    config.fetch(3600)
        .continueWithTask { task ->
            if (!task.isSuccessful) {
                task.exception?.let {
                    throw it
                }
            }
            config.activate()
        }
        .addOnCompleteListener(this) { task ->
            if (task.isSuccessful) {
                // Parameter values successfully activated
                // ...
            } else {
                // Handle errors
            }
        }

    Java

    //Remote Config fetches and activates parameter values from the service
    final FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
    config.fetch(3600)
            .continueWithTask(new Continuation<Void, Task<Boolean>>() {
                @Override
                public Task<Boolean> then(@NonNull Task<Void> task) throws Exception {
                    if (!task.isSuccessful()) {
                        throw task.getException();
                    }
                    return config.activate();
                }
            })
            .addOnCompleteListener(new OnCompleteListener<Boolean>() {
                @Override
                public void onComplete(@NonNull Task<Boolean> task) {
                    if (task.isSuccessful()) {
                        // Parameter values successfully activated
                        // ...
                    } else {
                        // Handle errors
                    }
                }
            });
  4. Aby wyłączyć Performance Monitoring w konsoli Firebase, utwórz w projekcie aplikacji parametr perf_disable, a następnie ustaw jego wartość na true.

    Ta zmiana spowoduje, że wywołania pakietu SDK Performance Monitoring będą wywołaniami „bez operacji” (NOOP), co wyeliminuje wszelkie znaczące skutki korzystania z pakietu SDK Performance Monitoring w aplikacji na wydajność aplikacji.

    Jeśli ustawisz wartość perf_disable na false, Performance Monitoring pozostanie włączone.