مانیتورینگ عملکرد Firebase را غیرفعال کنید


در طول توسعه و آزمایش برنامه، ممکن است غیرفعال کردن Performance Monitoring مفید باشد.

برای مثال، با غیرفعال کردن Performance Monitoring در طول فرآیند ساخت برنامه ، می‌توانید:

  • برخی از قابلیت‌های Performance Monitoring (مانند مواردی که توسط افزونه Performance Monitoring Gradle ارائه می‌شوند) را در نسخه‌های اشکال‌زدایی (debug) خود غیرفعال کنید، اما این قابلیت‌ها را برای نسخه نهایی (release build) دوباره فعال کنید.

  • هنگام ساخت برنامه، 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 )، مطمئن شوید که وابستگی افزونه Android Gradle شما نسخه ۳.۴.۰ یا بالاتر تعیین شده باشد.

    برای نسخه‌های قبلی افزونه‌ی اندروید گریدل، همچنان می‌توانید افزونه‌ی Performance Monitoring را برای یک نوع ساخت خاص غیرفعال کنید، اما سهم زمان ساخت برای آن نوع به طور کامل حذف نخواهد شد.

  2. پرچم زیر را به فایل 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
          }
        }
      }
    }

افزونه را از طریق پرچم ویژگی پروژه غیرفعال کنید

با استفاده از پرچم ویژگی پروژه ، می‌توانید افزونه Performance Monitoring را برای همه انواع ساخت در زمان کامپایل غیرفعال کنید.

پرچم زیر را به فایل 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 اندروید

اگر کتابخانه 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 دفعه‌ی بعدی که برنامه‌ی اندروید شما اجرا می‌شود، از کد نمونه‌ی نشان داده شده در زیر استفاده کنید. برای اطلاعات بیشتر در مورد استفاده از Remote Config در یک برنامه‌ی اندروید، به Use Firebase Remote Config در اندروید مراجعه کنید.

  1. مطمئن شوید که Remote Config در بخش dependencies فایل Gradle ماژول (سطح برنامه) شما (معمولاً <project>/<app-module>/build.gradle.kts یا <project>/<app-module>/build.gradle ) قرار دارد):

    Kotlin

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

    Java

      implementation("com.google.firebase:firebase-config:23.0.1")
    
  2. Remote Config تنظیم کنید و اگر perf_disable روی true تنظیم شده باشد، Performance Monitoring غیرفعال کنید:

    Kotlin

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

    // 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 تنظیم کنید.

    این تغییر باعث می‌شود فراخوانی‌های «بدون عملیات» (NOOP) به Performance Monitoring SDK انجام شود و هرگونه تأثیر قابل توجه بر عملکرد برنامه از استفاده از Performance Monitoring SDK در برنامه شما حذف شود.

    اگر مقدار perf_disable را روی false تنظیم کنید، Performance Monitoring همچنان فعال می‌ماند.