Tắt tính năng Giám sát hiệu suất Firebase

Trong quá trình phát triển và kiểm thử ứng dụng, bạn nên tắt tính năng Giám sát hiệu suất.

Ví dụ: bằng cách tắt tính năng Giám sát hiệu suất trong quá trình xây dựng ứng dụng, bạn có thể:

  • Tắt một số chức năng của tính năng Giám sát hiệu suất (chẳng hạn như các chức năng do trình bổ trợ Gradle Giám sát hiệu suất cung cấp) trong bản gỡ lỗi, nhưng bật lại những chức năng đó cho bản phát hành.

  • Tắt tính năng Giám sát hiệu suất khi tạo ứng dụng nhưng cho phép ứng dụng bật lại tính năng này trong thời gian chạy.

  • Tắt tính năng Giám sát hiệu suất khi tạo ứng dụng và không cho phép ứng dụng bật lại tính năng này trong thời gian chạy.

Bạn cũng có thể bật tính năng Giám sát hiệu suất, nhưng hãy sử dụng Cấu hình từ xa Firebase để linh hoạt tắt (và bật lại) tính năng Giám sát hiệu suất trong ứng dụng phát hành chính thức. Với lựa chọn này, bạn thậm chí có thể định cấu hình ứng dụng của mình để cho phép người dùng chọn sử dụng hoặc không sử dụng tính năng Giám sát hiệu suất.

Tắt tính năng Giám sát hiệu suất trong quá trình xây dựng ứng dụng

Bạn có thể tắt tính năng Giám sát hiệu suất trong quá trình xây dựng bằng cách tắt trình bổ trợ Giám sát hiệu suất của Gradle và/hoặc tắt thư viện Giám sát hiệu suất trên Android.

Trong quá trình phát triển và gỡ lỗi, bạn nên tắt trình bổ trợ này vì khả năng đo lường của trình bổ trợ có thể góp phần làm tăng thời gian xây dựng. Tuy nhiên, bạn có thể cân nhắc việc bật thư viện để vẫn có thể xem dữ liệu hiệu suất từ dấu vết khởi động ứng dụng, dấu vết ứng dụng ở nền trước và dấu vết ứng dụng trong nền cũng như mọi dấu vết mã tuỳ chỉnh trong ứng dụng của bạn.

Tắt trình bổ trợ Gradle cho phép giám sát hiệu suất

Bạn có thể tắt trình bổ trợ Giám sát hiệu suất bằng cách thêm cờ instrumentationEnabled thông qua các tuỳ chọn sau:

  • Thuộc tính tiện ích – tắt trình bổ trợ cho một biến thể bản dựng cụ thể tại thời điểm biên dịch

  • Project Properties (Thuộc tính của dự án) – tắt trình bổ trợ cho tất cả biến thể bản dựng tại thời điểm biên dịch

Tắt trình bổ trợ thông qua cờ Thuộc tính của tiện ích

Bằng cách sử dụng cờ Thuộc tính tiện ích, bạn có thể tắt trình bổ trợ Giám sát hiệu suất cho một biến thể bản dựng cụ thể tại thời điểm biên dịch.

  1. Trong tệp Gradle cấp độ gốc (cấp dự án) (<project>/build.gradle.kts hoặc <project>/build.gradle), hãy đảm bảo rằng phần phụ thuộc của Trình bổ trợ Android cho Gradle được chỉ định là phiên bản 3.4.0 trở lên.

    Đối với các phiên bản trước đây của Trình bổ trợ Android cho Gradle, bạn vẫn có thể tắt trình bổ trợ Giám sát hiệu suất cho một biến thể bản dựng cụ thể, nhưng thời gian tạo bản dựng cho biến thể đó sẽ không bị loại bỏ hoàn toàn.

  2. Thêm cờ sau vào tệp Gradle mô-đun (cấp ứng dụng) của bạn (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle), sau đó đặt thành false để tắt trình bổ trợ Giám sát hiệu suất.

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

Tắt trình bổ trợ thông qua cờ Project Properties (Thuộc tính của dự án)

Bằng cách sử dụng cờ Thuộc tính của dự án, bạn có thể tắt trình bổ trợ Giám sát hiệu suất cho tất cả biến thể bản dựng tại thời điểm biên dịch.

Thêm cờ sau vào tệp gradle.properties, sau đó đặt thành false để tắt trình bổ trợ Giám sát hiệu suất.

// ...

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

Tắt thư viện Giám sát hiệu suất trên Android

Nếu tắt thư viện Giám sát hiệu suất tại thời điểm biên dịch, bạn có thể chọn có cho phép ứng dụng bật thư viện này trong thời gian chạy hay không.

Tắt thư viện tại thời điểm biên dịch nhưng cho phép ứng dụng bật thư viện trong thời gian chạy

Thêm phần tử <meta-data> sau đây vào tệp AndroidManifest.xml của ứng dụng:

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

Tắt thư viện tại thời điểm biên dịch nhưng không cho phép ứng dụng bật thư viện trong thời gian chạy

Thêm phần tử <meta-data> sau đây vào tệp AndroidManifest.xml của ứng dụng:

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

Tắt ứng dụng trong thời gian chạy bằng Cấu hình từ xa

Cấu hình từ xa Firebase cho phép bạn thay đổi hành vi và giao diện của ứng dụng. Cấu hình này là một cách lý tưởng để bạn có thể tắt tính năng Giám sát hiệu suất trong các thực thể đã triển khai của ứng dụng.

Để tắt tính năng thu thập dữ liệu của tính năng Giám sát hiệu suất vào lần tiếp theo ứng dụng Android khởi động, hãy sử dụng mã mẫu bên dưới. Để biết thêm thông tin về cách sử dụng Cấu hình từ xa trong ứng dụng Android, hãy xem bài viết Sử dụng Cấu hình từ xa Firebase trên Android.

  1. Đảm bảo rằng Cấu hình từ xa nằm trong phần dependencies của tệp Gradle mô-đun (cấp ứng dụng) (thường là <project>/<app-module>/build.gradle.kts hoặc <project>/<app-module>/build.gradle):

    Kotlin+KTX

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

    Java

      implementation("com.google.firebase:firebase-config:22.0.0")
    
  2. Thiết lập Cấu hình từ xa và tắt tính năng Giám sát hiệu suất nếu bạn đặt perf_disable thành true:

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

    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. Thêm mã sau vào MainActivity.java để tìm nạp và kích hoạt các giá trị Cấu hình từ xa:

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

    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. Để tắt tính năng Giám sát hiệu suất trong bảng điều khiển của Firebase, hãy tạo một thông số perf_disable trong dự án của ứng dụng, sau đó đặt giá trị của thông số đó thành true.

    Thay đổi này sẽ thực hiện các lệnh gọi "không hoạt động" (NOOP) cho SDK giám sát hiệu suất, qua đó loại bỏ mọi ảnh hưởng đáng kể đến hiệu suất của ứng dụng do sử dụng SDK giám sát hiệu suất trong ứng dụng của bạn.

    Nếu bạn đặt giá trị của perf_disable thành false, thì tính năng Giám sát hiệu suất sẽ vẫn bật.