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

禁用 Firebase 性能監控

在應用程序開發和測試期間,您可能會發現禁用性能監控很有用。

例如,通過禁用性能在你的應用程序的構建過程監控,您可以:

  • 監視性能的禁用某些功能(如提供的那些性能監控搖籃插件)在您的調試版本,但重新啟用您的發行版本的功能。

  • 在構建您的應用程序時禁用性能監控,但允許您的應用程序在運行時重新啟用它。

  • 在構建您的應用程序時禁用性能監控,並且不允許您的應用程序在運行時重新啟用它。

您也可以建立與啟用監控性能的應用程序,但使用火力地堡遠程配置,讓您靈活地禁用(和重新啟用)性能在生產應用程序的監控。使用此選項,您甚至可以配置您的應用程序,讓用戶選擇加入或退出使用性能監控。

在您的應用程序構建過程中禁用性能監控

您可以禁用性能期間構建過程監控禁用性能監視搖籃插件和/或禁用性能監視的Android庫

在開發和調試,禁用插件是有用的,因為儀器由插件可以有助於提高生成時間。你可能會,但是,考慮保持庫啟用,這樣你仍然可以查看從性能數據的應用程序啟動,應用功能於前台,和app-的背景痕跡以及任何自定義代碼的痕跡在你的應用程序。

禁用性能監控 Gradle 插件

您可以禁用性能監視通過添加插件instrumentationEnabled使用以下選項標誌:

通過擴展屬性標誌禁用插件

通過使用擴展屬性的標誌,可以禁用性能監視插件在編譯時特定生成變種。

  1. 在你的根級別(項目級別) build.gradle文件,請確保您的Android搖籃插件依賴性被指定為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上

  1. 確保遠程配置是在dependencies你的模塊搖籃文件(通常是部分app/build.gradle ):

    implementation 'com.google.firebase:firebase-config:21.0.1'
    
  2. 建立遠程配置和禁用的性能,如果監測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獲取並激活遠程配置值:

    爪哇

    //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. 要禁用表現在火力地堡控制台監測,建立在你的應用程序的項目perf_disable參數,然後將其值設置為true

    此更改將調用性能監控 SDK“無操作”調用 (NOOP),從而消除在您的應用中使用性能監控 SDK 對應用性能的任何重大影響。

    如果您的perf_disable值設置為false ,性能監控功能處於啟用狀態。