获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

禁用 Firebase 性能监控

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

在应用程序开发和测试期间,您可能会发现禁用性能监控很有用。

例如,通过在应用构建过程中禁用性能监控,您可以:

  • 在调试版本中禁用性能监控的某些功能(例如性能监控 Gradle 插件提供的功能),但重新启用发布版本的功能。

  • 在构建您的应用程序时禁用性能监控,但允许您的应用程序在运行时重新启用它。

  • 在构建您的应用程序时禁用性能监控,并且不允许您的应用程序在运行时重新启用它。

您也可以在启用性能监控的情况下构建您的应用,但使用 Firebase 远程配置可以让您灵活地在生产应用中禁用(和重新启用)性能监控。使用此选项,您甚至可以将您的应用程序配置为让用户选择加入或退出使用性能监控。

在应用构建过程中禁用性能监控

您可以通过禁用性能监控 Gradle 插件和/或禁用性能监控 Android 库来在构建过程中禁用性能监控。

在开发和调试期间,禁用插件很有用,因为插件的检测会增加构建时间。但是,您可以考虑启用该库,以便您仍然可以查看来自应用程序启动、应用程序在前台和应用程序在后台跟踪以及应用程序中的任何自定义代码跟踪的性能数据。

禁用性能监控 Gradle 插件

您可以通过使用以下选项添加instrumentationEnabled标志来禁用性能监控插件:

通过扩展属性标志禁用插件

通过使用扩展属性标志,您可以在编译时禁用特定构建变体的性能监控插件。

  1. 在您的根级(项目级) build.gradle文件中,确保您的 Android Gradle 插件依赖项指定为 v3.4.0 或更高版本。

    对于早期版本的 Android Gradle 插件,您仍然可以为特定构建变体禁用性能监控插件,但不会完全消除该变体的构建时间贡献。

  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>

使用远程配置在运行时禁用您的应用

Firebase 远程配置可让您更改应用的行为和外观,因此它提供了一种理想的方式来让您在应用的已部署实例中禁用性能监控。

要在您的 Android 应用下次启动时禁用性能监控数据收集,请使用下面显示的示例代码。有关在 Android 应用中使用远程配置的更多信息,请参阅在 Android 上使用 Firebase 远程配置

  1. 确保远程配置位于模块 Gradle 文件的dependencies项部分(通常是app/build.gradle ):

    implementation 'com.google.firebase:firebase-config:21.2.0'
    
  2. 如果perf_disable设置为true ,则设置远程配置并禁用性能监控:

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

    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
                }
            }
  3. 将以下代码添加到MainActivity.java以获取并激活远程配置值:

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

    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
                }
            }
  4. 要在 Firebase 控制台中禁用性能监控,请在应用的项目中创建一个perf_disable参数,然后将其值设置为true

    此更改将对性能监控 SDK 进行“无操作”调用 (NOOP),从而消除在您的应用中使用性能监控 SDK 对应用性能的任何重大影响。

    如果您将perf_disable的值设置为false ,性能监控将保持启用状态。