Menonaktifkan Firebase Performance Monitoring

Selama pengembangan dan pengujian aplikasi, terkadang ada baiknya Anda menonaktifkan Performance Monitoring.

Misalnya, dengan menonaktifkan Performance Monitoring selama proses build aplikasi, Anda dapat:

  • Menonaktifkan fungsionalitas Performance Monitoring tertentu (seperti yang disediakan oleh plugin Gradle Performance Monitoring) di build debug Anda, tetapi mengaktifkan kembali fungsionalitas untuk build rilis Anda.

  • Menonaktifkan Performance Monitoring saat mem-build aplikasi, tetapi mengizinkan aplikasi untuk mengaktifkannya kembali saat runtime.

  • Menonaktifkan Performance Monitoring saat mem-build aplikasi dan tidak mengizinkan aplikasi untuk mengaktifkannya kembali saat runtime.

Anda juga dapat mem-build aplikasi dengan Performance Monitoring yang diaktifkan, tetapi menggunakan Firebase Remote Config agar mendapatkan fleksibilitas untuk menonaktifkan (dan mengaktifkan kembali) Performance Monitoring di aplikasi produksi Anda. Dengan opsi ini, Anda bahkan dapat mengonfigurasi aplikasi Anda agar pengguna dapat memilih untuk menggunakan atau tidak menggunakan Performance Monitoring.

Menonaktifkan Performance Monitoring selama proses build aplikasi

Anda dapat menonaktifkan Performance Monitoring selama proses build dengan menonaktifkan plugin Gradle Performance Monitoring dan/atau dengan menonaktifkan library Android Performance Monitoring.

Selama pengembangan dan proses debug, menonaktifkan plugin berguna karena instrumentasi dengan plugin dapat turut memperlama waktu build. Namun, sebaiknya tetap aktifkan library sehingga Anda tetap dapat melihat data performa dari trace awal aplikasi, aplikasi di latar depan, dan aplikasi di latar belakang serta trace kode kustom di aplikasi Anda.

Menonaktifkan Plugin Gradle Performance Monitoring

Anda dapat menonaktifkan plugin Performance Monitoring dengan menambahkan flag instrumentationEnabled menggunakan opsi berikut:

  • Extension Property — menonaktifkan plugin untuk varian build tertentu pada waktu kompilasi

  • Project Property — menonaktifkan plugin untuk semua varian build pada waktu kompilasi

Menonaktifkan plugin melalui flag Extension Property

Dengan menggunakan flag Extension Property, Anda dapat menonaktifkan plugin Performance Monitoring untuk varian build tertentu pada waktu kompilasi.

  1. Dalam file Gradle level root (level project) (<project>/build.gradle.kts atau <project>/build.gradle), pastikan dependensi Plugin Android Gradle Anda menggunakan v3.4.0 atau yang lebih baru.

    Untuk versi Plugin Android Gradle sebelumnya, Anda tetap dapat menonaktifkan plugin Performance Monitoring untuk varian build tertentu, tetapi kontribusi waktu build untuk varian tersebut tidak akan sepenuhnya dihilangkan.

  2. Tambahkan flag berikut ke file Gradle modul (level aplikasi) (biasanya <project>/<app-module>/build.gradle.kts atau <project>/<app-module>/build.gradle), lalu setel kefalse untuk menonaktifkan plugin Performance Monitoring.

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

Menonaktifkan plugin melalui flag Project Property

Dengan menggunakan flag Project Property, Anda dapat menonaktifkan plugin Performance Monitoring untuk semua varian build pada waktu kompilasi.

Tambahkan flag berikut ke file gradle.properties Anda, lalu setel ke false untuk menonaktifkan plugin Performance Monitoring.

// ...

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

Menonaktifkan library Android Performance Monitoring

Jika library Performance Monitoring dinonaktifkan pada waktu kompilasi, Anda dapat memilih apakah ingin mengizinkan aplikasi mengaktifkan library saat runtime.

Menonaktifkan library pada waktu kompilasi, tetapi mengizinkan aplikasi Anda untuk mengaktifkannya saat runtime

Tambahkan elemen <meta-data> berikut ke file AndroidManifest.xml aplikasi Anda:

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

Menonaktifkan library pada waktu kompilasi, tetapi tidak mengizinkan aplikasi untuk mengaktifkannya saat runtime

Tambahkan elemen <meta-data> berikut ke file AndroidManifest.xml aplikasi Anda:

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

Menonaktifkan aplikasi saat runtime menggunakan Remote Config

Dengan Firebase Remote Config, Anda dapat mengubah perilaku dan tampilan aplikasi. Hal tersebut memberikan cara yang ideal bagi Anda untuk menonaktifkan Performance Monitoring pada instance aplikasi yang di-deploy.

Untuk menonaktifkan pengumpulan data Performance Monitoring saat berikutnya aplikasi Android Anda dimulai, gunakan kode contoh yang ditunjukkan di bawah ini. Untuk mengetahui informasi lebih lanjut tentang penggunaan Remote Config di aplikasi Android, lihat Menggunakan Firebase Remote Config di Android.

  1. Pastikan Remote Config ada di bagian dependencies pada file Gradle modul (level aplikasi) (biasanya <project>/<app-module>/build.gradle.kts atau <project>/<app-module>/build.gradle):

    Kotlin+KTX

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

    Java

      implementation("com.google.firebase:firebase-config:21.6.3")
    
  2. Siapkan Remote Config dan nonaktifkan Performance Monitoring jika perf_disable ditetapkan ke 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. Tambahkan kode berikut ke MainActivity.java untuk mengambil dan mengaktifkan value Remote Config:

    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. Untuk menonaktifkan Performance Monitoring di Firebase console, buat parameter perf_disable di project aplikasi Anda, lalu tetapkan value-nya ke true.

    Perubahan ini akan menjadikan panggilan ke Performance Monitoring SDK sebagai panggilan "tanpa pengoperasian" (NO-OPs), yang menghilangkan efek signifikan penggunaan Performance Monitoring SDK pada performa aplikasi Anda.

    Jika Anda menetapkan value perf_disable ke false, Performance Monitoring akan tetap aktif.