ไปที่คอนโซล

停用 Firebase 性能监控

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

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

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

  • 在构建应用时停用性能监控,但允许应用在运行时重新启用它。

  • 在构建应用时停用性能监控,且不允许应用在运行时重新启用它。

您还可以在构建应用时启用性能监控,但使用 Firebase 远程配置灵活地在正式版应用中停用(和重新启用)性能监控。通过此选项,您甚至可以将您的应用配置为允许用户启用或停用性能监控。

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

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

在开发和调试期间,停用插件很有用,因为插件执行的检测 (instrumentation) 会延长构建所用的时间。但您可以考虑一直启用库,以便继续从应用的自动时长跟踪记录和任何自定义跟踪记录中查看性能数据。

停用性能监控 Gradle 插件

您可以使用以下选项添加 instrumentationEnabled 标志,从而停用性能监控插件:

通过 Extension Property 标志停用插件

通过使用 Extensions Property 标志,您可以在编译时为特定构建版本停用性能监控插件。

  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 HTTP/S network request monitoring
            // for a specific build variant at compile time.
            instrumentationEnabled false
          }
        }
      }
    }
    

通过 Project Property 标志停用插件

通过使用 Project Property 标志,您可以在编译时为所有构建版本停用性能监控插件。

将以下标志添加到您的 gradle.properties 文件,然后将其设置为 false 以停用性能监控插件。

// ...

// Set this flag to 'false' to disable @AddTrace annotation processing and
// automatic HTTP/S network request monitoring
// 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 远程配置更改应用的行为和外观,因此,如需为您的应用的已部署实例停用 Performance Monitoring,利用远程配置是一种理想的方式。

如需在 Android 应用下次启动时停用 Performance Monitoring 数据收集,请使用下面的示例代码。如需了解关于在 Android 应用中使用远程配置的详情,请参阅在 Android 上使用 Firebase 远程配置

  1. 确保在您的模块 Gradle 文件(通常是 app/build.gradle)的 dependencies 部分中添加远程配置:

    implementation 'com.google.firebase:firebase-config:18.0.0'
    
  2. 如果 perf_disable 设置为 true,设置远程配置并停用 Performance Monitoring:

    Java

    // Setup remote config
    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()
    //       .setDeveloperModeEnabled(BuildConfig.DEBUG)
    //       .build();
    // mFirebaseRemoteConfig.setConfigSettings(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.setDefaults(R.xml.remote_config_defaults);
    if (config.getBoolean("perf_disable")) {
        FirebasePerformance.getInstance().setPerformanceCollectionEnabled(false);
    } else {
        FirebasePerformance.getInstance().setPerformanceCollectionEnabled(true);
    }

    Kotlin

    // Setup remote config
    val 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()
    //       .setDeveloperModeEnabled(BuildConfig.DEBUG)
    //       .build();
    // mFirebaseRemoteConfig.setConfigSettings(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.setDefaults(R.xml.remote_config_defaults)
    FirebasePerformance.getInstance().isPerformanceCollectionEnabled = !config.getBoolean("perf_disable")
  3. 将以下代码添加到 MainActivity.java 以提取并激活远程配置值:

    Java

    //Remote Config fetches and activates parameter values from the service
    final FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
    config.fetch(3600)
            .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()) {
                        config.activateFetched();
                    } else {
                        // ...
                    }
                }
            });

    Kotlin

    // Remote Config fetches and activates parameter values from the service
    val config = FirebaseRemoteConfig.getInstance()
    config.fetch(3600)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    config.activateFetched()
                } else {
                    // ...
                }
            }
  4. 如需在 Firebase 控制台中停用性能监控,请在应用的项目中创建一个 perf_disable 参数,然后将其值设置为 true

    此更改会使对 Performance Monitoring SDK 的调用成为“空操作”调用 (NOOP),从而消除在应用中使用 Performance Monitoring SDK 对应用性能造成的显著影响。

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