Inhabilita Firebase Performance Monitoring


Durante el desarrollo y las pruebas de la app, puede que te resulte útil inhabilitar Performance Monitoring.

Por ejemplo, si inhabilitas Performance Monitoring durante el proceso de compilación de la app puedes hacer lo siguiente:

  • Inhabilitar ciertas funcionalidades de Performance Monitoring (como las que proporciona el complemento de Gradle de Performance Monitoring) en tus compilaciones de depuración, pero volver a habilitarlas para la compilación de lanzamiento.

  • Inhabilitar Performance Monitoring cuando compiles tu app, pero permitir que esta lo vuelva a habilitar en el tiempo de ejecución.

  • Inhabilitar Performance Monitoring cuando compiles tu app, y no permitir que esta lo vuelva a habilitar en el tiempo de ejecución.

También puedes compilar tu app con Performance Monitoring habilitado, pero usar Firebase Remote Config a fin de tener la flexibilidad necesario para inhabilitar (y volver a habilitar) Performance Monitoring en tu app de producción. Con esta opción, incluso puedes configurar tu app para permitir que los usuarios acepten o rechacen el uso de Performance Monitoring.

Inhabilita Performance Monitoring durante el proceso de compilación de la app

Puedes inhabilitar Performance Monitoring durante el proceso de compilación si inhabilitas el complemento de Gradle de Performance Monitoring o si inhabilitas la biblioteca de Android de Performance Monitoring.

Inhabilitar el complemento durante el desarrollo y la depuración es útil porque la instrumentación que realiza el complemento puede hacer que aumente el tiempo de compilación. Sin embargo, también recomendamos que consideres mantener habilitada la biblioteca para continuar viendo los datos de rendimiento de los seguimientos del inicio de la app, la app en primer plano y en segundo plano, así como cualquier seguimiento de código personalizado de la app.

Inhabilita el complemento de Gradle de Performance Monitoring

Para inhabilitar el complemento de Performance Monitoring, agrega una marca instrumentationEnabled con las siguientes opciones:

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

  • Propiedad del proyecto: Inhabilita el complemento para todas las variantes de compilación en el tiempo de compilación.

Inhabilita el complemento mediante una marca de propiedad de la extensión

Puedes inhabilitar el complemento de Performance Monitoring de una variante de compilación específica en el tiempo de compilación con una marca de propiedad de la extensión.

  1. En el archivo de Gradle (<project>/build.gradle.kts o <project>/build.gradle) de nivel de raíz (a nivel de proyecto), asegúrate de que la dependencia del complemento de Android para Gradle se especifique como v3.4.0. o posterior.

    En el caso de las versiones anteriores del complemento de Android para Gradle, aún puedes inhabilitar el complemento de Performance Monitoring de una variante de compilación específica, pero la contribución al tiempo de compilación de esa variante no se eliminará por completo.

  2. Agrega la siguiente marca al archivo de Gradle (generalmente <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle) del módulo (a nivel de la app) y, luego, configúrala como false para inhabilitar el complemento de 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
          }
        }
      }
    }

Inhabilita el complemento mediante una marca de propiedad del proyecto

Puedes inhabilitar el complemento de Performance Monitoring de todas las variantes de compilación en el tiempo de compilación con una marca de propiedad del proyecto.

Agrega la siguiente marca al archivo gradle.properties y, luego, configúrala como false para inhabilitar el complemento de 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

Inhabilita la biblioteca de Android de Performance Monitoring

Si inhabilitas la biblioteca de Performance Monitoring en el tiempo de compilación, puedes elegir si quieres que tu app la habilite en el tiempo de ejecución.

Inhabilita la biblioteca en el tiempo de compilación, pero permite que tu app la habilite en el tiempo de ejecución

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

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

Inhabilita la biblioteca en el tiempo de compilación, pero no permitas que la app la habilite en el tiempo de ejecución

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

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

Inhabilita tu app en el tiempo de ejecución con Remote Config

Firebase Remote Config te permite realizar cambios en el comportamiento y la apariencia de tu app, por lo que es una manera ideal de inhabilitar Performance Monitoring en instancias implementadas de tu app.

Usa el código de ejemplo que se muestra a continuación para inhabilitar la recopilación de datos de Performance Monitoring la próxima vez que se inicie la app para Android. Para obtener más información sobre el uso de Remote Config en una app para Android, consulta Usa Firebase Remote Config en Android.

  1. Asegúrate de que Remote Config esté en la sección dependencies de tu Archivo Gradle de tu módulo (nivel de app) (por lo general, <project>/<app-module>/build.gradle.kts o <project>/<app-module>/build.gradle):

    Kotlin+KTX

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

    Java

      implementation("com.google.firebase:firebase-config:22.0.1")
    
  2. Configura Remote Config e inhabilita Performance Monitoring si perf_disable se establece 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. Agrega el siguiente código a MainActivity.java para recuperar y activar 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 inhabilitar Performance Monitoring en Firebase console, crea un parámetro perf_disable en el proyecto de tu app y, luego, establece su valor en true.

    Este cambio hará que las llamadas al SDK de Performance Monitoring sean “sin operación” (NOOP), lo que elimina todos los efectos importantes en el rendimiento de la app generados por el uso del SDK de Performance Monitoring en tu app.

    Si configuras el valor de perf_disable como false, Performance Monitoring seguirá habilitado.