Désactiver Firebase Performance Monitoring


Lors du développement et des tests de votre application, il peut être utile de désactiver Performance Monitoring.

Par exemple, en désactivant Performance Monitoring pendant le processus de compilation de votre application, vous pouvez :

  • désactiver certaines fonctionnalités de Performance Monitoring (telles que celles fournies par le Performance Monitoring plug-in Gradle) dans vos builds de débogage, mais les réactiver pour votre build de version ;

  • désactiver Performance Monitoring lors de la compilation de votre application, mais autoriser votre application à le réactiver au moment de l'exécution ;

  • désactiver Performance Monitoring lors de la compilation de votre application et ne pas autoriser votre application à le réactiver au moment de l'exécution.

Vous pouvez également compiler votre application avec Performance Monitoring activé, mais utiliser Firebase Remote Config pour vous donner la flexibilité de désactiver (et de réactiver) Performance Monitoring dans votre application de production. Avec cette option, vous pouvez même configurer votre application pour que les utilisateurs puissent choisir d'utiliser ou non Performance Monitoring.

Désactiver Performance Monitoring pendant le processus de compilation de votre application

Vous pouvez désactiver Performance Monitoring pendant le processus de compilation en désactivant le plug-in Gradle Performance Monitoring et/ou en désactivant la bibliothèque Android Performance Monitoring.

Lors du développement et du débogage, la désactivation du plug-in est utile, car l'instrumentation par le plug-in peut augmenter le temps de compilation. Toutefois, vous pouvez envisager de laisser la bibliothèque activée afin de pouvoir continuer à afficher les données de performances à partir des traces de démarrage de l'application, d'application au premier plan et d'application en arrière-plan ainsi que toutes les traces de code personnalisées de votre application.

Désactiver le plug-in Gradle Performance Monitoring

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

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

  • Propriété de projet : désactive le plug-in pour toutes les variantes de compilation au moment de la compilation

Désactiver le plug-in via un indicateur de propriété d'extension

En utilisant un indicateur de propriété d'extension, vous pouvez désactiver le plug-in Performance Monitoring pour une variante de compilation 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 au plug-in Android Gradle est spécifiée comme étant la version 3.4.0 ou une version ultérieure.

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

  2. Ajoutez l'indicateur suivant à votre fichier Gradle au niveau du 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 plug-in 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ésactiver le plug-in via un indicateur de propriété de projet

En utilisant un indicateur de propriété de projet, vous pouvez désactiver le plug-in Performance Monitoring pour toutes les variantes de compilation 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 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

Désactiver la bibliothèque Android Performance Monitoring

Si vous désactivez la bibliothèque Performance Monitoring 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ésactiver la bibliothèque au moment de la compilation, mais autoriser 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ésactiver la bibliothèque au moment de la compilation, mais ne pas autoriser 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ésactiver 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 de désactiver Performance Monitoring dans les instances déployées de votre application.

Pour désactiver la collecte de données Performance Monitoring au prochain démarrage de votre application Android, utilisez l'exemple de code ci-dessous. Pour en savoir plus 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 de votre module (au niveau de l'application) Gradle (généralement <project>/<app-module>/build.gradle.kts ou <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. Configurez Remote Config et désactivez Performance Monitoring si perf_disable est défini sur 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. Ajoutez le code suivant à MainActivity.java pour récupérer et activer Remote Config valeurs :

    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. Pour désactiver Performance Monitoring 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 transformera les appels au Performance Monitoring SDK "sans opération" (NOOP), ce qui éliminera tout effet significatif sur les performances de l'application lié à l'utilisation du Performance Monitoring SDK dans votre application.

    Si vous définissez la valeur de perf_disable sur false, Performance Monitoring reste activé.