Vô hiệu hóa giám sát hiệu suất Firebase

Trong quá trình phát triển và thử nghiệm ứng dụng, bạn có thể thấy hữu ích khi tắt Giám sát hiệu suất.

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

  • Tắt một số chức năng nhất định của Giám sát hiệu suất (chẳng hạn như các chức năng được cung cấp bởi plugin Lớp giám sát hiệu suất ) trong bản dựng gỡ lỗi của bạn, nhưng bật lại các chức năng cho bản phát hành của bạn.

  • Tắt tính năng Giám sát hiệu suất khi xây dựng ứng dụng của bạn nhưng cho phép ứng dụng của bạn bật lại tính năng này khi chạy.

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

Bạn cũng có thể xây dựng ứng dụng của mình khi 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 để giúp bạn linh hoạt trong việc tắt (và bật lại) tính năng Giám sát hiệu suất trong ứng dụng sản xuất của mình. Với tùy 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 tham gia hoặc từ chối sử dụng Giám sát hiệu suất.

Vô hiệu hóa Giám sát hiệu suất trong quá trình xây dựng ứng dụng của bạn

Bạn có thể tắt Giám sát hiệu suất trong quá trình xây dựng của mình bằng cách tắt plugin Cấp độ giám sát hiệu suất và/hoặc bằng cách tắt thư viện Android Giám sát hiệu suất .

Trong quá trình phát triển và gỡ lỗi, việc vô hiệu hóa plugin rất hữu ích vì công cụ đo lường của plugin 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, ứng dụng ở nền trước và ứng dụng ở chế độ nền cũng như bất kỳ dấu vết mã tùy chỉnh nào trong ứng dụng của bạn.

Vô hiệu hóa Plugin Gradle giám sát hiệu suất

Bạn có thể tắt plugin Giám sát hiệu suất bằng cách thêm cờ instrumentationEnabled bằng các tùy chọn sau:

Vô hiệu hóa plugin thông qua cờ Thuộc tính tiện ích mở rộng

Bằng cách sử dụng cờ Thuộc tính tiện ích mở rộng , bạn có thể tắt plugin 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 ), đảm bảo phần phụ thuộc Plugin Android Gradle của bạn được chỉ định là v3.4.0 trở lên.

    Đối với các phiên bản trước của Plugin Android Gradle, bạn vẫn có thể tắt plugin Giám sát hiệu suất cho một biến thể bản dựng cụ thể nhưng đóng góp thời gian xây 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 nó thành false để tắt plugin 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
          }
        }
      }
    }
    

Vô hiệu hóa plugin thông qua cờ Thuộc tính dự án

Bằng cách sử dụng cờ Thuộc tính dự án , bạn có thể tắt plugin Giám sát hiệu suất cho tất cả cá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 của bạn, sau đó đặt cờ thành false để tắt plugin 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

Vô hiệu hóa thư viện Giám sát hiệu suất Android

Nếu tắt thư viện Giám sát hiệu suất khi biên dịch, bạn có thể chọn có cho phép ứng dụng của mình bật thư viện khi chạy hay không.

Vô hiệu hóa thư viện khi biên dịch, nhưng cho phép ứng dụng của bạn kích hoạt nó khi chạy

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

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

Vô hiệu hóa thư viện khi biên dịch, nhưng không cho phép ứng dụng của bạn kích hoạt nó khi chạy

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

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

Vô hiệu hóa ứng dụng của bạn trong thời gian chạy bằng Remote Config

Firebase Remote Config cho phép bạn thực hiện các thay đổi đối với hành vi và giao diện của ứng dụng, do đó, nó cung cấp một cách lý tưởng để cho phép bạn tắt tính năng Giám sát hiệu suất trong các phiên bản đã triển khai của ứng dụng.

Để tắt thu thập dữ liệu Giám sát hiệu suất vào lần tiếp theo khi ứng dụng Android của bạn khởi động, hãy sử dụng mã ví dụ được hiển thị 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 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) của bạn (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:21.4.1")
    

    Java

      implementation("com.google.firebase:firebase-config:21.4.1")
    
  2. Thiết lập Cấu hình từ xa và tắt Giám sát hiệu suất nếu perf_disable được đặt 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 Giám sát hiệu suất trong bảng điều khiển Firebase, hãy tạo thông số perf_disable trong dự án ứng dụng của bạn, sau đó đặt giá trị thành true .

    Thay đổi này sẽ thực hiện lệnh gọi SDK giám sát hiệu suất "không hoạt động" (NOOP), loại bỏ mọi ảnh hưởng đáng kể đến hiệu suất ứ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 , Giám sát hiệu suất vẫn được bật.