ปิดใช้การตรวจสอบประสิทธิภาพของ Firebase


ในระหว่างการพัฒนาและทดสอบแอป คุณอาจพบว่าการปิดใช้ Performance Monitoring นั้นมีประโยชน์

ตัวอย่างเช่น การปิดใช้ Performance Monitoring ระหว่างขั้นตอนการสร้างแอปช่วยให้คุณทำสิ่งต่อไปนี้ได้

  • ปิดใช้ฟังก์ชันบางอย่างของ Performance Monitoring (เช่น ฟังก์ชันที่มีให้โดยปลั๊กอิน Gradle ของ Performance Monitoring) ในบิลด์การแก้ไขข้อบกพร่อง แต่เปิดใช้ฟังก์ชันสำหรับบิลด์ที่เผยแพร่อีกครั้ง

  • ปิดใช้ Performance Monitoring เมื่อสร้างแอป แต่อนุญาตให้แอปเปิดใช้อีกครั้งขณะรันไทม์

  • ปิดใช้ Performance Monitoring ขณะสร้างแอป และไม่อนุญาตให้แอปเปิดใช้อีกครั้งขณะรันไทม์

คุณยังสร้างแอปโดยเปิดใช้ Performance Monitoring ได้ด้วย แต่ใช้ Firebase Remote Config เพื่อให้คุณมีความยืดหยุ่นในการปิดใช้ (และเปิดใช้อีกครั้ง) Performance Monitoring ในแอปเวอร์ชันที่ใช้งานจริง ตัวเลือกนี้ยังช่วยให้คุณกำหนดค่าแอปให้ผู้ใช้เลือกใช้หรือไม่ใช้ Performance Monitoring ได้ด้วย

ปิดใช้ Performance Monitoring ในระหว่างกระบวนการสร้างแอป

คุณปิดใช้ Performance Monitoring ในระหว่างกระบวนการบิลด์ได้โดยปิดใช้Performance Monitoring ปลั๊กอิน Gradle และ/หรือปิดใช้Performance Monitoring ไลบรารี Android

ในระหว่างการพัฒนาและการแก้ไขข้อบกพร่อง การปิดใช้ปลั๊กอินจะมีประโยชน์เนื่องจากเครื่องมือวัดผลโดยปลั๊กอินอาจทำให้เวลาสร้างเพิ่มขึ้น อย่างไรก็ตาม คุณอาจพิจารณาเปิดใช้ไลบรารีต่อไปเพื่อให้ยังดูข้อมูลประสิทธิภาพจากการเริ่มแอป แอปที่ทำงานอยู่เบื้องหน้า และแอปที่ทำงานอยู่เบื้องหลัง รวมถึงการติดตามโค้ดที่กําหนดเองในแอปได้

ปิดใช้ปลั๊กอิน Performance Monitoring Gradle

คุณปิดใช้ปลั๊กอิน Performance Monitoring ได้โดยการเพิ่มแฟล็ก instrumentationEnabled โดยใช้ตัวเลือกต่อไปนี้

ปิดใช้ปลั๊กอินผ่านแฟล็กพร็อพเพอร์ตี้ส่วนขยาย

การใช้แฟล็กพร็อพเพอร์ตี้ส่วนขยายช่วยให้คุณปิดใช้ปลั๊กอิน Performance Monitoring สำหรับเวอร์ชันบิลด์ที่เจาะจงขณะคอมไพล์ได้

  1. ในไฟล์ Gradle ระดับราก (ระดับโปรเจ็กต์) (<project>/build.gradle.kts หรือ <project>/build.gradle) โปรดตรวจสอบว่า ทรัพยากร Dependency ของปลั๊กอิน Android Gradle ระบุเป็น v3.4.0 ขึ้นไป

    สำหรับปลั๊กอิน Android Gradle เวอร์ชันเก่า คุณจะยังคงปิดใช้ปลั๊กอิน Performance Monitoring สำหรับตัวแปรการสร้างที่เฉพาะเจาะจงได้ แต่จะยังตัดเวลาในการสร้างสำหรับตัวแปรนั้นไม่ได้ทั้งหมด

  2. เพิ่ม Flag ต่อไปนี้ลงในไฟล์ Gradle ของโมดูล (ระดับแอป) (โดยปกติจะเป็น <project>/<app-module>/build.gradle.kts หรือ <project>/<app-module>/build.gradle) จากนั้นตั้งค่าเป็น false เพื่อปิดใช้ปลั๊กอิน 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
          }
        }
      }
    }

ปิดใช้ปลั๊กอินผ่าน Flag พร็อพเพอร์ตี้โปรเจ็กต์

เมื่อใช้ Flag Project Property คุณจะปิดใช้ปลั๊กอิน Performance Monitoring สำหรับตัวแปรการสร้างทั้งหมดได้เมื่อถึงเวลาคอมไพล์

เพิ่ม Flag ต่อไปนี้ลงในไฟล์ gradle.properties แล้วตั้งค่าเป็น false เพื่อปิดใช้ปลั๊กอิน 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

ปิดใช้Performance Monitoringคลัง Android

หากปิดใช้ไลบรารี Performance Monitoring ในเวลาคอมไพล์ คุณเลือกได้ว่าจะอนุญาตให้แอปเปิดใช้ไลบรารีดังกล่าวระหว่างรันไทม์หรือไม่

ปิดใช้ไลบรารีเมื่อคอมไพล์ แต่อนุญาตให้แอปเปิดใช้เมื่อรันไทม์

เพิ่มเอลิเมนต์ <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>

ปิดใช้แอปขณะรันไทม์โดยใช้ Remote Config

Firebase Remote Config ช่วยให้คุณเปลี่ยนแปลงลักษณะการทำงานและรูปลักษณ์ของแอปได้ จึงเหมาะสําหรับการปิดใช้ Performance Monitoring ในอินสแตนซ์ที่ใช้งานอยู่ของแอป

หากต้องการปิดใช้การเก็บรวบรวมข้อมูลของ Performance Monitoring ในครั้งถัดไปที่แอป Android เริ่มทำงาน ให้ใช้โค้ดตัวอย่างด้านล่าง ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ Remote Config ในแอป Android ได้ที่ใช้ Firebase Remote Config ใน Android

  1. ตรวจสอบว่า Remote Config อยู่ในส่วน dependencies ของไฟล์ Gradle ระดับโมดูล (ระดับแอป) (โดยปกติจะเป็น <project>/<app-module>/build.gradle.kts หรือ <project>/<app-module>/build.gradle)

    Kotlin+KTX

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

    Java

      implementation("com.google.firebase:firebase-config:22.0.1")
    
  2. ตั้งค่า Remote Config และปิดใช้ Performance Monitoring หากตั้งค่า perf_disable เป็น 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. เพิ่มโค้ดต่อไปนี้ลงใน MainActivity.java เพื่อดึงข้อมูลและเปิดใช้งานค่า 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. หากต้องการปิดใช้ Performance Monitoring ในคอนโซล Firebase ให้สร้างพารามิเตอร์ perf_disable ในโปรเจ็กต์ของแอป แล้วตั้งค่าเป็น true

    การเปลี่ยนแปลงนี้จะเรียก SDK ของ Performance Monitoring ว่า "ไม่มีการดำเนินการ" (NOOP) ซึ่งจะช่วยลดผลกระทบที่สำคัญต่อประสิทธิภาพของแอปจากการใช้ SDK ของ Performance Monitoring ในแอปของคุณ

    หากคุณตั้งค่า perf_disable เป็น false ได้ Performance Monitoring จะยังคงเปิดใช้