Désactiver Firebase Performance Monitoring


Lors du développement et des tests de l'application, vous pouvez trouver utile de désactiver Performance Monitoring.

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

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

  • Désactivez Performance Monitoring lors de la compilation de votre application, mais autorisez-la à la réactiver au moment de l'exécution.

  • Désactivez Performance Monitoring lors de la création de votre application et n'autorisez pas votre application à l'activer à nouveau au moment de l'exécution.

Vous pouvez également créer votre application avec Performance Monitoring activé, mais utiliser Firebase Remote Config pour pouvoir désactiver (et réactiver) Performance Monitoring dans votre application de production. Avec cette option, vous pouvez même configurer votre application pour permettre aux utilisateurs d'activer ou de désactiver l'utilisation de 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 contribuer à augmenter la durée de compilation. Vous pouvez toutefois envisager de laisser la bibliothèque activée afin de pouvoir continuer à afficher les données de performances des traces de démarrage de l'application, de l'application au premier plan et de l'application en arrière-plan, ainsi que toutes les traces de code personnalisé dans votre application.

Désactiver le plug-in Gradle Performance Monitoring

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 plug-in pour une variante de compilation spécifique au moment de la compilation.

  • Propriété du 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

À l'aide d'un indicateur Extensions Property (Propriété Extensions), 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 la dépendance du plug-in Android Gradle est spécifiée comme étant la version 3.4.0 ou ultérieure.

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

  2. Ajoutez l'indicateur suivant à votre fichier Gradle de 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

À l'aide d'un indicateur Project Property (Propriété du 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 s'agit donc d'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 la prochaine fois que votre application Android démarre, utilisez l'exemple de code ci-dessous. Pour en savoir plus sur l'utilisation de Remote Config dans une application Android, consultez la section Utiliser Firebase Remote Config sur Android.

  1. Assurez-vous que Remote Config se trouve dans la section dependencies de votre fichier Gradle de module (au niveau de l'application) (généralement <project>/<app-module>/build.gradle.kts ou <project>/<app-module>/build.gradle):

    Kotlin

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

    Java

      implementation("com.google.firebase:firebase-config:22.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 extraire et activer les valeurs Remote Config:

    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.

    Ce changement effectuera des appels "aucune opération" (NOOP) au SDK Performance Monitoring, ce qui élimine tout effet significatif sur les performances de l'application de l'utilisation du SDK Performance Monitoring dans votre application.

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