Catch up on everthing we announced at this year's Firebase Summit. Learn more

Отключить мониторинг производительности Firebase

Во время разработки и тестирования приложения может оказаться полезным отключить мониторинг производительности.

Например, отключение мониторинга эффективности во время процесса сборки приложения , вы можете:

  • Отключить определенные функциональные мониторинга производительности (например, те , которые предусмотрены Performance Monitoring Gradle плагин ) в вашем отладочной версии, но повторно включить функциональные возможности для вашей сборки выпуска.

  • Отключите мониторинг производительности при создании приложения, но разрешите приложению повторно включить его во время выполнения.

  • Отключите мониторинг производительности при создании приложения и не позволяйте приложению повторно включать его во время выполнения.

Вы также можете создать свое приложение с Performance Мониторинга включена, но использовать Firebase Remote Config , чтобы дать вам возможность отключить (и снова включить) Мониторинг производительности в производственном приложении. С помощью этой опции вы даже можете настроить свое приложение, чтобы пользователи могли соглашаться или отказываться от использования мониторинга производительности.

Отключите мониторинг производительности во время сборки приложения

Вы можете отключить Performance Monitoring во время процесса сборки путем отключения мониторинга производительности Gradle плагин и / или отключения мониторинга производительности Android библиотеки .

В процессе разработки и отладки, отключив плагин является полезным , поскольку инструментовка плагин может способствовать увеличению времени сборки. Можно, однако, рассмотреть хранение библиотеки включена , так что вы можете просматривать данные о производительности запуска приложения, приложение-в-плане, и приложение-на-фоне следов , а также любые пользовательские следы кода в вашем приложении.

Отключить подключаемый модуль Gradle для мониторинга производительности

Вы можете отключить Performance Monitoring плагин, добавив instrumentationEnabled флаг , используя следующие параметры:

Отключите плагин с помощью флага свойства расширения

При использовании флага расширения свойств, вы можете отключить плагин Performance Monitoring для конкретного варианта сборки во время компиляции.

  1. В корневом уровне ( на уровне проекта) build.gradle файл, убедитесь , что ваша зависимость Android Gradle Plugin определяется как v3.4.0 или более поздней версии.

    Для более ранних версий Android Gradle Plugin вы все равно можете отключить плагин Performance Monitoring для определенного варианта сборки, но вклад времени сборки для этого варианта не будет полностью исключен.

  2. Добавьте следующий флаг для модуля (приложение уровня) build.gradle файл, а затем установить его в false , чтобы отключить мониторинг производительности плагин.

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

Отключите плагин с помощью флага свойства проекта

При использовании флага проекта собственности, вы можете отключить мониторинг производительности плагин для всех вариантов сборки во время компиляции.

Добавьте следующий флаг в свой gradle.properties файл, а затем установить его в false , чтобы отключить мониторинг производительности плагин.

// ...

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

Отключить библиотеку Android для мониторинга производительности

Если вы отключите библиотеку мониторинга производительности во время компиляции, вы можете выбрать, разрешить ли вашему приложению включать библиотеку во время выполнения.

Отключите библиотеку во время компиляции, но разрешите вашему приложению включать ее во время выполнения

Добавьте следующее <meta-data> элемент для вашего приложения AndroidManifest.xml файла:

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

Отключите библиотеку во время компиляции, но не позволяйте вашему приложению включать ее во время выполнения.

Добавьте следующее <meta-data> элемент для вашего приложения AndroidManifest.xml файла:

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

Отключите приложение во время выполнения с помощью Remote Config

Firebase Remote Config позволяет вам вносить изменения в поведение и внешний вид вашего приложения, поэтому он предоставляет идеальный способ отключить мониторинг производительности в развернутых экземплярах вашего приложения.

Чтобы отключить сбор данных мониторинга производительности при следующем запуске приложения Android, используйте пример кода, показанный ниже. Для получения дополнительной информации об использовании Remote Config в Android приложения, см Использование Firebase Удаленная настройка на Android .

  1. Убедитесь в том, что Удаленная настройка находится в dependencies части вашего модуль Gradle файл (обычно app/build.gradle ):

    implementation 'com.google.firebase:firebase-config:21.0.1'
    
  2. Настройка удаленного Config и отключение мониторинга производительности , если perf_disable установлено значение true :

    Джава

    // 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
                    }
                }
            });

    Котлин + 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
                }
            }
  3. Добавьте следующий код MainActivity.java для загрузки и активации удаленного значения Config:

    Джава

    //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
                    }
                }
            });

    Котлин + 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
                }
            }
  4. Для того, чтобы отключить Performance Monitoring в Firebase консоли создайте perf_disable параметр в проекте вашего приложения, а затем установите его значение true .

    Это изменение приведет к вызовам SDK для мониторинга производительности «без операций» (NOOP), что устранит любое существенное влияние на производительность приложения при использовании SDK для мониторинга производительности в вашем приложении.

    Если установить значение perf_disable в false , мониторинг производительности остается включенным.