Firebase Performance Monitoring'i devre dışı bırak


Uygulama geliştirme ve test sırasında Performance Monitoring özelliğini devre dışı bırakmak faydalı olabilir.

Örneğin, uygulamanızın derleme işlemi sırasında Performance Monitoring özelliğini devre dışı bırakarak şunları yapabilirsiniz:

  • Hata ayıklama derlemelerinizde Performance Monitoring'ın belirli işlevlerini (ör. Performance Monitoring Gradle eklentisi tarafından sağlananlar) devre dışı bırakın ancak yayınlanan derlemeniz için bu işlevleri yeniden etkinleştirin.

  • Uygulamanızı oluştururken Performance Monitoring özelliğini devre dışı bırakın ancak uygulamanızın çalışma zamanında bu özelliği yeniden etkinleştirmesine izin verin.

  • Uygulamanızı oluştururken Performance Monitoring özelliğini devre dışı bırakın ve uygulamanızın çalışma zamanında bu özelliği yeniden etkinleştirmesine izin vermeyin.

Uygulamanızı Performance Monitoring etkin olacak şekilde de oluşturabilirsiniz ancak üretim uygulamanızda Performance Monitoring özelliğini devre dışı bırakma (ve yeniden etkinleştirme) esnekliği sağlamak için Firebase Remote Config kullanın. Bu seçenekle, uygulamanızı kullanıcıların Performance Monitoring özelliğini etkinleştirmesine veya kapsamı dışında kalmayı seçmesine izin verecek şekilde de yapılandırabilirsiniz.

Uygulama derleme sürecinizde Performance Monitoring özelliğini devre dışı bırakma

Derleme sürecinizde Performance Monitoring özelliğini devre dışı bırakmak için Performance Monitoring Gradle eklentisini ve/veya Performance Monitoring Android kitaplığını devre dışı bırakabilirsiniz.

Geliştirme ve hata ayıklama sırasında eklentiyi devre dışı bırakmak faydalıdır. Çünkü eklentinin araçları derleme süresinin uzamasına neden olabilir. Ancak uygulamanızdaki uygulama başlatma, ön plandaki uygulama ve arka plandaki uygulama izlemelerinin yanı sıra özel kod izlemelerinin performans verilerini görüntülemeye devam edebilmek için kitaplığı etkin durumda tutabilirsiniz.

Performance Monitoring Gradle eklentisini devre dışı bırakma

Aşağıdaki seçenekleri kullanarak instrumentationEnabled işaretini ekleyip Performance Monitoring eklentisini devre dışı bırakabilirsiniz:

  • Extension Property: Derleme süresinde belirli bir derleme değişkeni için eklentiyi devre dışı bırakır.

  • Proje Özelliği: Derleme süresinde tüm derleme değişkenleri için eklentiyi devre dışı bırakır.

Eklentiyi bir uzantı özelliği işaretiyle devre dışı bırakma

Extensions Property işaretini kullanarak derleme süresinde belirli bir derleme değişkeni için Performance Monitoring eklentisini devre dışı bırakabilirsiniz.

  1. Kök düzeyindeki (proje düzeyinde) Gradle dosyanızda (<project>/build.gradle.kts veya <project>/build.gradle), Android Gradle eklentisi bağımlılığınızın 3.4.0 veya sonraki bir sürüm olarak belirtildiğinden emin olun.

    Android Gradle eklentisinin önceki sürümlerinde, belirli bir derleme değişkeni için Performance Monitoring eklentisini devre dışı bırakabilirsiniz ancak bu değişkenin derleme süresine katkısı tamamen ortadan kaldırılmaz.

  2. Modülünüzün (uygulama düzeyinde) Gradle dosyasına (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle) aşağıdaki işareti ekleyin, ardından Performance Monitoring eklentisini devre dışı bırakmak için bu işareti false olarak ayarlayın.

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

Eklentiyi bir proje özelliği işaretçisi aracılığıyla devre dışı bırakma

Bir Proje Özelliği işareti kullanarak derleme süresinde tüm derleme değişkenleri için Performance Monitoring eklentisini devre dışı bırakabilirsiniz.

Performance Monitoring eklentisini devre dışı bırakmak için gradle.properties dosyanıza aşağıdaki işareti ekleyin ve false olarak ayarlayın.

// ...

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

Performance Monitoring Android kitaplığını devre dışı bırakma

Derleme sırasında Performance Monitoring kitaplığını devre dışı bırakırsanız uygulamanızın çalışma zamanında kitaplığı etkinleştirmesine izin verip vermeyeceğinizi seçebilirsiniz.

Kitaplığı derleme zamanında devre dışı bırakma ancak uygulamanızın çalışma zamanında etkinleştirmesine izin verme

Aşağıdaki <meta-data> öğesini uygulamanızın AndroidManifest.xml dosyasına ekleyin:

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

Kitaplığı derleme süresinde devre dışı bırakma ancak uygulamanızın çalışma zamanında etkinleştirmesine izin vermeme

Aşağıdaki <meta-data> öğesini uygulamanızın AndroidManifest.xml dosyasına ekleyin:

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

Remote Config kullanarak uygulamanızı çalışma zamanında devre dışı bırakma

Firebase Remote Config, uygulamanızın davranışında ve görünümünde değişiklik yapmanıza olanak tanır. Bu sayede, uygulamanızın dağıtılan örneklerinde Performance Monitoring özelliğini devre dışı bırakmak için ideal bir yöntem sunar.

Android uygulamanız bir sonraki sefer başlatıldığında Performance Monitoring veri toplamayı devre dışı bırakmak için aşağıdaki örnek kodu kullanın. Android uygulamasında Remote Config kullanımı hakkında daha fazla bilgi için Android'de Firebase Remote Config kullanma başlıklı makaleyi inceleyin.

  1. Remote Config öğesinin, modülünüzün (uygulama düzeyinde) Gradle dosyasının (genellikle <project>/<app-module>/build.gradle.kts veya <project>/<app-module>/build.gradle) dependencies bölümünde olduğundan emin olun:

    Kotlin

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

    Java

      implementation("com.google.firebase:firebase-config:24.0.0")
    
  2. perf_disable, true olarak ayarlanmışsa Remote Config ayarını yapın ve Performance Monitoring ayarını devre dışı bırakın:

    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. Remote Config değerlerini getirip etkinleştirmek için MainActivity.java dosyasına aşağıdaki kodu ekleyin:

    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. Firebase konsolunda Performance Monitoring özelliğini devre dışı bırakmak için uygulamanızın projesinde perf_disable parametresi oluşturun ve değerini true olarak ayarlayın.

    Bu değişiklik, Performance Monitoring SDK'ya yapılan çağrıları "işlem yok" çağrıları (NOOP) haline getirir ve uygulamanızda Performance Monitoring SDK'nın kullanılmasının uygulama performansı üzerindeki önemli etkilerini ortadan kaldırır.

    perf_disable değerini false olarak ayarlarsanız Performance Monitoring etkin kalır.