غیرفعال کردن «پایشگر کارایی 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 را درطول فرایند ساخت با غیرفعال کردن افزایه Gradle‏ Performance Monitoring و/یا با غیرفعال کردن کتابخانه Android‏ Performance Monitoring غیرفعال کنید.

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

غیرفعال کردن افزونه Gradle Performance Monitoring

می‌توانید افزونه Performance Monitoring را با افزودن پرچم instrumentationEnabled بااستفاده از گزینه‌های زیر غیرفعال کنید:

  • Extension Property — افزونه را برای یک تنوع ساخت خاص در زمان ترجمه غیرفعال می‌کند

  • Project Property — افزونه را برای همه تنوع‌های ساخت در زمان ترجمه غیرفعال می‌کند

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

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

  1. در فایل Gradle سطح ریشه (سطح پروژه) (<project>/build.gradle.kts یا <project>/build.gradle)، مطمئن شوید وابستگی «افزایه Android 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
          }
        }
      }
    }

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

بااستفاده از پرچم Project Property، می‌توانید افزونه 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

غیرفعال کردن کتابخانه Android 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 در دفعه بعدی که برنامه 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

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

    Java

      implementation("com.google.firebase:firebase-config:24.0.0")
    
  2. اگر perf_disable روی true تنظیم شده است، Remote Config را راه‌اندازی کنید و 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 تنظیم کنید.

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

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