تعطيل مراقبة أداء Firebase

أثناء تطوير التطبيق واختباره ، قد تجد أنه من المفيد تعطيل مراقبة الأداء.

على سبيل المثال ، من خلال تعطيل مراقبة الأداء أثناء عملية إنشاء التطبيق ، يمكنك:

  • قم بتعطيل وظائف معينة لمراقبة الأداء (مثل تلك التي يوفرها المكون الإضافي لمراقبة الأداء Gradle ) في تصميمات تصحيح الأخطاء ، ولكن أعد تمكين الوظائف لبناء الإصدار الخاص بك.

  • قم بتعطيل مراقبة الأداء عند إنشاء تطبيقك ، ولكن اسمح لتطبيقك بإعادة تمكينه في وقت التشغيل.

  • قم بتعطيل مراقبة الأداء عند إنشاء تطبيقك ، ولا تسمح لتطبيقك بإعادة تمكينه في وقت التشغيل.

يمكنك أيضًا إنشاء تطبيقك مع تمكين مراقبة الأداء ، ولكن استخدم Firebase Remote Config لمنحك المرونة لتعطيل (وإعادة تمكين) مراقبة الأداء في تطبيق الإنتاج الخاص بك. باستخدام هذا الخيار ، يمكنك أيضًا تكوين تطبيقك للسماح للمستخدمين بالاشتراك أو إلغاء الاشتراك باستخدام مراقبة الأداء.

تعطيل مراقبة الأداء أثناء عملية بناء التطبيق الخاص بك

يمكنك تعطيل مراقبة الأداء أثناء عملية الإنشاء عن طريق تعطيل المكوّن الإضافي لمراقبة الأداء Gradle و / أو تعطيل مكتبة Android لمراقبة الأداء .

أثناء التطوير وتصحيح الأخطاء ، يكون تعطيل المكون الإضافي مفيدًا لأن الأجهزة بواسطة المكون الإضافي يمكن أن تساهم في زيادة وقت الإنشاء. ومع ذلك ، قد تفكر في الاحتفاظ بالمكتبة ممكّنة بحيث لا يزال بإمكانك عرض بيانات الأداء من بدء التطبيق ، والتطبيق في المقدمة ، وآثار التطبيق في الخلفية بالإضافة إلى أي آثار رمز مخصص في تطبيقك.

تعطيل البرنامج المساعد Gradle لمراقبة الأداء

يمكنك تعطيل المكون الإضافي لمراقبة الأداء عن طريق إضافة علامة instrumentationEnabled باستخدام الخيارات التالية:

  • خاصية الامتداد - تعطيل المكون الإضافي لمتغير بناء معين في وقت الترجمة

  • خاصية المشروع - تعطيل البرنامج المساعد لجميع متغيرات البناء في وقت الترجمة

قم بتعطيل المكون الإضافي عبر علامة خاصية الامتداد

باستخدام علامة خاصية الامتدادات ، يمكنك تعطيل المكون الإضافي لمراقبة الأداء لمتغير بناء معين في وقت الترجمة.

  1. في ملف Gradle على مستوى الجذر (على مستوى المشروع) ( <project>/build.gradle.kts أو <project>/build.gradle ) ، تأكد من تحديد تبعية Android Gradle Plugin على أنها v3.4.0 أو أحدث.

    بالنسبة للإصدارات السابقة من Android Gradle Plugin ، لا يزال بإمكانك تعطيل المكون الإضافي لمراقبة الأداء لمتغير بناء معين ، ولكن لن يتم التخلص تمامًا من المساهمة في وقت الإنشاء لهذا المتغير.

  2. أضف العلامة التالية إلى ملف Gradle (على مستوى التطبيق) للوحدة النمطية الخاصة بك (عادةً ما يكون <project>/<app-module>/build.gradle.kts أو <project>/<app-module>/build.gradle ) ، ثم قم بتعيينه to 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
          }
        }
      }
    }
    

قم بتعطيل المكون الإضافي عبر علامة خاصية المشروع

باستخدام علامة Project Property ، يمكنك تعطيل المكون الإضافي لمراقبة الأداء لجميع متغيرات الإنشاء في وقت الترجمة.

أضف العلامة التالية إلى ملف 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 ، استخدم مثال الرمز الموضح أدناه. لمزيد من المعلومات حول استخدام 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:21.4.1")
    

    Java

      implementation("com.google.firebase:firebase-config:21.4.1")
    
  2. قم بإعداد Remote Config وتعطيل مراقبة الأداء إذا تم تعيين 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. لتعطيل مراقبة الأداء في وحدة تحكم Firebase ، أنشئ معلمة perf_disable في مشروع تطبيقك ، ثم اضبط قيمتها على true .

    سيؤدي هذا التغيير إلى إجراء مكالمات إلى استدعاءات "بلا عملية" (NOOPs) الخاصة بمراقبة الأداء ، مما يلغي أي تأثيرات مهمة على أداء التطبيق من خلال استخدام SDK لمراقبة الأداء في تطبيقك.

    إذا قمت بتعيين قيمة perf_disable على false ، تظل مراقبة الأداء ممكَّنة.