Deshabilitar la supervisión del rendimiento de Firebase

Durante el desarrollo y las pruebas de la aplicación, puede resultarle útil desactivar la supervisión del rendimiento.

Por ejemplo, al desactivar la supervisión del rendimiento durante el proceso de creación de su aplicación , puede:

  • Deshabilite ciertas funcionalidades de Performance Monitoring (como las proporcionadas por el complemento Performance Monitoring Gradle ) en sus compilaciones de depuración, pero vuelva a habilitar las funcionalidades para su versión de lanzamiento.

  • Deshabilite la supervisión del rendimiento cuando cree su aplicación, pero permita que su aplicación la vuelva a habilitar en tiempo de ejecución.

  • Deshabilite la supervisión del rendimiento cuando cree su aplicación y no permita que su aplicación la vuelva a habilitar en tiempo de ejecución.

También puedes crear tu aplicación con la supervisión del rendimiento habilitada , pero usa Firebase Remote Config para tener flexibilidad para deshabilitar (y volver a habilitar) la supervisión del rendimiento en tu aplicación de producción. Con esta opción, incluso puede configurar su aplicación para permitir que los usuarios opten por participar o no en el uso de Performance Monitoring.

Deshabilite la supervisión del rendimiento durante el proceso de creación de su aplicación

Puede deshabilitar el Monitoreo de rendimiento durante el proceso de compilación deshabilitando el complemento Gradle de Monitoreo de rendimiento y/o deshabilitando la biblioteca de Android de Monitoreo de rendimiento .

Durante el desarrollo y la depuración, deshabilitar el complemento es útil porque la instrumentación del complemento puede contribuir a aumentar el tiempo de compilación. Sin embargo, podría considerar mantener la biblioteca habilitada para poder seguir viendo los datos de rendimiento desde el inicio de la aplicación, los seguimientos de la aplicación en primer plano y de la aplicación en segundo plano, así como cualquier seguimiento de código personalizado en su aplicación.

Deshabilite el complemento Gradle de monitoreo de rendimiento

Puede deshabilitar el complemento Performance Monitoring agregando un indicador instrumentationEnabled usando las siguientes opciones:

  • Propiedad de extensión : deshabilita el complemento para una variante de compilación específica en el momento de la compilación

  • Propiedad del proyecto : deshabilita el complemento para todas las variantes de compilación en el momento de la compilación

Deshabilite el complemento mediante un indicador de propiedad de extensión

Al utilizar un indicador de propiedad de extensiones , puede deshabilitar el complemento de monitoreo de rendimiento para una variante de compilación específica en el momento de la compilación.

  1. En su archivo Gradle de nivel raíz (nivel de proyecto) ( <project>/build.gradle.kts o <project>/build.gradle ), asegúrese de que su dependencia del complemento Gradle de Android esté especificada como v3.4.0 o posterior.

    Para versiones anteriores del complemento Android Gradle, aún puede deshabilitar el complemento Performance Monitoring para una variante de compilación específica, pero la contribución del tiempo de compilación para esa variante no se eliminará por completo.

  2. Agregue la siguiente marca al archivo Gradle de su módulo (nivel de aplicación) (generalmente <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle ), luego configúrelo en false para deshabilitar el complemento de Monitoreo de rendimiento.

    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
          }
        }
      }
    }
    

Deshabilite el complemento a través de un indicador de propiedad del proyecto

Al utilizar un indicador de propiedad del proyecto , puede deshabilitar el complemento de monitoreo de rendimiento para todas las variantes de compilación en el momento de la compilación.

Agregue la siguiente marca a su archivo gradle.properties , luego configúrela en false para deshabilitar el complemento 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

Deshabilite la biblioteca de Android de Monitoreo de rendimiento

Si deshabilita la biblioteca de Monitoreo de rendimiento en tiempo de compilación, puede elegir si desea permitir que su aplicación habilite la biblioteca en tiempo de ejecución.

Deshabilite la biblioteca en tiempo de compilación, pero permita que su aplicación la habilite en tiempo de ejecución

Agrega el siguiente elemento <meta-data> al archivo AndroidManifest.xml de tu aplicación:

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

Deshabilite la biblioteca en tiempo de compilación, pero no permita que su aplicación la habilite en tiempo de ejecución

Agrega el siguiente elemento <meta-data> al archivo AndroidManifest.xml de tu aplicación:

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

Deshabilite su aplicación en tiempo de ejecución usando Remote Config

Firebase Remote Config te permite realizar cambios en el comportamiento y la apariencia de tu aplicación, por lo que proporciona una forma ideal de permitirte desactivar la supervisión del rendimiento en instancias implementadas de tu aplicación.

Para deshabilitar la recopilación de datos de Monitoreo de rendimiento la próxima vez que inicie su aplicación de Android, use el código de ejemplo que se muestra a continuación. Para obtener más información sobre el uso de Remote Config en una aplicación de Android, consulte Usar Firebase Remote Config en Android .

  1. Asegúrese de que Remote Config esté en la sección dependencies del archivo Gradle de su módulo (nivel de aplicación) (generalmente <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle ):

    Kotlin+KTX

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

    Java

      implementation("com.google.firebase:firebase-config:21.6.3")
    
  2. Configure Remote Config y deshabilite la supervisión del rendimiento si perf_disable está configurado en true :

    Kotlin+KTX

    // 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. Agregue el siguiente código a MainActivity.java para recuperar y activar los valores de Remote Config:

    Kotlin+KTX

    // 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. Para deshabilitar la supervisión del rendimiento en Firebase console, crea un parámetro perf_disable en el proyecto de tu aplicación y luego establece su valor en true .

    Este cambio realizará llamadas "sin operación" (NOOP) del SDK de Monitoreo de rendimiento, lo que eliminará cualquier efecto significativo en el rendimiento de la aplicación por el uso del SDK de Monitoreo de rendimiento en su aplicación.

    Si establece el valor de perf_disable en false , la supervisión del rendimiento permanece habilitada.