Wyłącz Monitorowanie wydajności Firebase


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

Na przykład wyłączając Performance Monitoring podczas procesu kompilacji aplikacji, możesz:

  • 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 wyrazić zgodę na korzystanie z Performance Monitoring lub zrezygnować z niego.

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 przyczynić się do wydłużenia czasu 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 działania aplikacji w tle a także wszelkie niestandardowe logi 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 nadal możesz wyłączyć wtyczkę Performance Monitoring dla konkretnego wariantu kompilacji, ale udział w czasie 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 Performance Monitoring biblieky na Androida

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.1.0")
    

    Java

      implementation("com.google.firebase:firebase-config:23.1.0")
    
  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.