Désactiver la surveillance des performances de Firebase

Lors du développement et des tests d’applications, il peut s’avérer utile de désactiver la surveillance des performances.

Par exemple, en désactivant la surveillance des performances pendant le processus de création de votre application , vous pouvez :

  • Désactivez certaines fonctionnalités de Performance Monitoring (telles que celles fournies par le plug-in Performance Monitoring Gradle ) dans vos versions de débogage, mais réactivez les fonctionnalités pour votre version de version.

  • Désactivez la surveillance des performances lors de la création de votre application, mais autorisez votre application à la réactiver au moment de l'exécution.

  • Désactivez la surveillance des performances lors de la création de votre application et n'autorisez pas votre application à la réactiver au moment de l'exécution.

Vous pouvez également créer votre application avec la surveillance des performances activée , mais utilisez Firebase Remote Config pour vous offrir la possibilité de désactiver (et réactiver) la surveillance des performances dans votre application de production. Avec cette option, vous pouvez même configurer votre application pour permettre aux utilisateurs d'accepter ou de refuser l'utilisation de la surveillance des performances.

Désactivez la surveillance des performances pendant le processus de création de votre application

Vous pouvez désactiver la surveillance des performances pendant votre processus de génération en désactivant le plug-in Performance Monitoring Gradle et/ou en désactivant la bibliothèque Android de surveillance des performances .

Pendant le développement et le débogage, la désactivation du plugin est utile car l'instrumentation par le plugin peut contribuer à augmenter le temps de construction. Vous pouvez cependant envisager de conserver la bibliothèque activée afin de pouvoir toujours afficher les données de performances des traces de démarrage de l'application, de l'application en premier plan et de l'application en arrière-plan, ainsi que toutes les traces de code personnalisé dans votre application.

Désactiver le plugin Gradle de surveillance des performances

Vous pouvez désactiver le plug-in Performance Monitoring en ajoutant un indicateur instrumentationEnabled à l'aide des options suivantes :

  • Propriété d'extension - désactive le plugin pour une variante de construction spécifique au moment de la compilation

  • Propriété du projet - désactive le plugin pour toutes les variantes de build au moment de la compilation

Désactivez le plugin via un indicateur de propriété d'extension

En utilisant un indicateur de propriété Extensions , vous pouvez désactiver le plug-in Performance Monitoring pour une variante de build spécifique au moment de la compilation.

  1. Dans votre fichier Gradle au niveau racine (au niveau du projet) ( <project>/build.gradle.kts ou <project>/build.gradle ), assurez-vous que votre dépendance du plug-in Android Gradle est spécifiée comme v3.4.0 ou ultérieure.

    Pour les versions antérieures du plugin Android Gradle, vous pouvez toujours désactiver le plugin Performance Monitoring pour une variante de build spécifique, mais la contribution au temps de build pour cette variante ne sera pas complètement éliminée.

  2. Ajoutez l'indicateur suivant au fichier Gradle de votre module (au niveau de l'application) (généralement <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle ), puis définissez-le sur false pour désactiver le plugin 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
          }
        }
      }
    }
    

Désactivez le plugin via un indicateur de propriété de projet

En utilisant un indicateur de propriété de projet , vous pouvez désactiver le plug-in de surveillance des performances pour toutes les variantes de build au moment de la compilation.

Ajoutez l'indicateur suivant à votre fichier gradle.properties , puis définissez-le sur false pour désactiver le plug-in de surveillance des performances.

// ...

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

Désactivez la bibliothèque Android de surveillance des performances

Si vous désactivez la bibliothèque de surveillance des performances au moment de la compilation, vous pouvez choisir d'autoriser ou non votre application à activer la bibliothèque au moment de l'exécution.

Désactivez la bibliothèque au moment de la compilation, mais autorisez votre application à l'activer au moment de l'exécution

Ajoutez l'élément <meta-data> suivant au fichier AndroidManifest.xml de votre application :

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

Désactivez la bibliothèque au moment de la compilation, mais n'autorisez pas votre application à l'activer au moment de l'exécution.

Ajoutez l'élément <meta-data> suivant au fichier AndroidManifest.xml de votre application :

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

Désactivez votre application au moment de l'exécution à l'aide de Remote Config

Firebase Remote Config vous permet de modifier le comportement et l'apparence de votre application. Il constitue donc un moyen idéal pour vous permettre de désactiver la surveillance des performances dans les instances déployées de votre application.

Pour désactiver la collecte de données de surveillance des performances au prochain démarrage de votre application Android, utilisez l'exemple de code ci-dessous. Pour plus d'informations sur l'utilisation de Remote Config dans une application Android, consultez Utiliser Firebase Remote Config sur Android .

  1. Assurez-vous que Remote Config se trouve dans la section dependencies du fichier Gradle de votre module (au niveau de l'application) (généralement <project>/<app-module>/build.gradle.kts ou <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. Configurez Remote Config et désactivez la surveillance des performances si perf_disable est défini sur 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. Ajoutez le code suivant à MainActivity.java pour récupérer et activer les valeurs 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. Pour désactiver la surveillance des performances dans la console Firebase, créez un paramètre perf_disable dans le projet de votre application, puis définissez sa valeur sur true .

    Cette modification effectuera des appels aux appels « sans opération » (NOOPs) du SDK Performance Monitoring, éliminant ainsi tout effet significatif sur les performances de l'application résultant de l'utilisation du SDK Performance Monitoring dans votre application.

    Si vous définissez la valeur de perf_disable sur false , la surveillance des performances reste activée.