השבת את ניטור הביצועים של Firebase

במהלך הפיתוח והבדיקות של האפליקציה, ייתכן שיהיה שימושי להשבית את ניטור הביצועים.

לדוגמה, על ידי השבתת ניטור ביצועים במהלך תהליך בניית האפליקציה שלך , אתה יכול:

  • השבת פונקציונליות מסוימות של ניטור ביצועים (כגון אלו המסופקים על ידי הפלאגין Performance Monitoring Gradle ) בבניית הבאגים שלך, אך הפעל מחדש את הפונקציונליות עבור בניית הגרסה שלך.

  • השבת את ניטור הביצועים בעת בניית האפליקציה שלך, אך אפשר לאפליקציה שלך להפעיל אותה מחדש בזמן ריצה.

  • השבת את ניטור הביצועים בעת בניית האפליקציה שלך, ואל תאפשר לאפליקציה שלך להפעיל אותה מחדש בזמן ריצה.

אתה יכול גם לבנות את האפליקציה שלך עם ניטור ביצועים מופעל , אבל השתמש ב-Firebase Remote Config כדי לתת לך גמישות להשבית (ולהפעיל מחדש) את ניטור הביצועים באפליקציית הייצור שלך. עם אפשרות זו, אתה אפילו יכול להגדיר את האפליקציה שלך כדי לאפשר למשתמשים להצטרף או לבטל את הסכמתך לשימוש בניטור ביצועים.

השבת את ניטור הביצועים במהלך תהליך בניית האפליקציה שלך

אתה יכול להשבית את ניטור הביצועים במהלך תהליך הבנייה שלך על ידי השבתת התוסף Gradle ניטור ביצועים ו/או על ידי השבתת ספריית ניטור הביצועים של Android .

במהלך פיתוח ואיתור באגים, השבתת התוסף שימושית מכיוון שהמכשור על ידי הפלאגין יכול לתרום להגדלת זמן הבנייה. עם זאת, ייתכן שתשקול להשאיר את הספרייה פעילה כך שעדיין תוכל לצפות בנתוני ביצועים מהתחלת האפליקציה, מעקב אפליקציה בחזית ואפליקציה ברקע, כמו גם מעקבי קוד מותאם אישית באפליקציה שלך.

השבת את הפלאגין Gradle ניטור ביצועים

אתה יכול להשבית את הפלאגין לניטור ביצועים על ידי הוספת דגל instrumentationEnabled באמצעות האפשרויות הבאות:

  • Extension Property - משבית את התוסף עבור וריאנט בנייה ספציפי בזמן ההידור

  • Project Property - משבית את התוסף עבור כל גרסאות הבנייה בזמן ההידור

השבת את התוסף באמצעות דגל מאפיין הרחבה

על ידי שימוש בדגל של מאפיין הרחבות , אתה יכול להשבית את התוסף לניטור ביצועים עבור וריאנט בנייה ספציפי בזמן ההידור.

  1. בקובץ Gradle ברמת השורש (ברמת הפרויקט) ( <project>/build.gradle.kts או <project>/build.gradle ), ודא שהתלות שלך ב-Android Gradle Plugin מוגדרת כ-v3.4.0 ואילך.

    עבור גרסאות קודמות של תוסף Android Gradle, אתה עדיין יכול להשבית את התוסף לניטור ביצועים עבור גרסת בנייה ספציפית, אך תרומת זמן הבנייה עבור גרסה זו לא תבוטל לחלוטין.

  2. הוסף את הדגל הבא לקובץ Gradle של המודול (ברמת האפליקציה) (בדרך כלל <project>/<app-module>/build.gradle.kts או <project>/<app-module>/build.gradle ), ולאחר מכן הגדר אותו ל- false כדי להשבית את הפלאגין לניטור ביצועים.

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

השבת את התוסף באמצעות דגל נכס פרויקט

על ידי שימוש בדגל של נכס פרויקט , אתה יכול להשבית את התוסף לניטור ביצועים עבור כל גרסאות הבנייה בזמן ההידור.

הוסף את הדגל הבא לקובץ 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>

השבת את האפליקציה שלך בזמן ריצה באמצעות Remote Config

Firebase Remote Config מאפשר לך לבצע שינויים בהתנהגות ובמראה של האפליקציה שלך, כך שהיא מספקת דרך אידיאלית לאפשר לך להשבית את ניטור הביצועים במופעים שנפרסו באפליקציה שלך.

כדי להשבית את איסוף הנתונים של ניטור ביצועים בפעם הבאה שאפליקציית Android שלך מופעלת, השתמש בקוד לדוגמה המוצג להלן. למידע נוסף על שימוש בתצורה מרחוק באפליקציית Android, ראה שימוש בתצורה מרחוק של Firebase ב-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:21.6.3")
    

    Java

      implementation("com.google.firebase:firebase-config:21.6.3")
    
  2. הגדר תצורה מרחוק והשבת את ניטור הביצועים אם 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 כדי לאחזר ולהפעיל ערכי 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. כדי להשבית את ניטור הביצועים במסוף Firebase, צור פרמטר perf_disable בפרויקט של האפליקציה שלך, ולאחר מכן הגדר את הערך שלו ל- true .

    שינוי זה יבצע קריאות ל-SDK לניטור ביצועים "ללא הפעלה" (NOOPs), ולבטל כל השפעה משמעותית על ביצועי האפליקציה מהשימוש ב-SDK לניטור ביצועים באפליקציה שלך.

    אם תגדיר את הערך של perf_disable ל- false , ניטור הביצועים יישאר מופעל.