Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

Firebaseパフォーマンスモニタリングを無効にする

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

アプリの開発およびテスト中は、Performance Monitoring を無効にすると便利な場合があります。

たとえば、アプリのビルド プロセス中に Performance Monitoring を無効にすると、次のことが可能になります。

  • デバッグ ビルドでは Performance Monitoring の特定の機能 ( Performance Monitoring Gradle プラグインによって提供される機能など) を無効にしますが、リリース ビルドでは機能を再度有効にします。

  • アプリのビルド時にパフォーマンス モニタリングを無効にしますが、アプリが実行時に再度有効にできるようにします。

  • アプリのビルド時にパフォーマンス モニタリングを無効にし、アプリが実行時に再度有効にできないようにします。

Performance Monitoringを有効にしてアプリをビルドすることもできますが、 Firebase Remote Config を使用すると、本番アプリで Performance Monitoring を柔軟に無効化 (および再度有効化) できます。このオプションを使用すると、ユーザーが Performance Monitoring の使用をオプトインまたはオプトアウトできるようにアプリを構成することもできます。

アプリのビルド プロセス中にパフォーマンス モニタリングを無効にする

ビルド プロセス中にパフォーマンス モニタリングを無効にするには、パフォーマンス モニタリング Gradle プラグイン無効にするか、パフォーマンス モニタリング Android ライブラリを無効にします。

プラグインによるインストルメンテーションはビルド時間の増加に寄与する可能性があるため、開発およびデバッグ中は、プラグインを無効にすると便利です。ただし、アプリの開始、フォアグラウンドのアプリ、バックグラウンドのアプリのトレース、およびアプリのカスタム コード トレースからのパフォーマンス データを引き続き表示できるように、ライブラリを有効にしておくことを検討してください。

パフォーマンス監視 Gradle プラグインを無効にする

次のオプションを使用して、 instrumentationEnabledフラグを追加することで、Performance Monitoring プラグインを無効にすることができます。

拡張プロパティ フラグを使用してプラグインを無効にする

拡張プロパティフラグを使用すると、コンパイル時に特定のビルド バリアントの Performance Monitoring プラグインを無効にできます。

  1. ルート レベル (プロジェクト レベル) のbuild.gradleファイルで、Android Gradle プラグインの依存関係が v3.4.0 以降として指定されていることを確認します。

    Android Gradle プラグインの以前のバージョンでは、特定のビルド バリアントのパフォーマンス モニタリング プラグインを無効にすることはできますが、そのバリアントのビルド時間の影響が完全に排除されるわけではありません。

  2. 次のフラグをモジュール (アプリ レベル) のbuild.gradleファイルに追加し、それをfalseに設定して Performance Monitoring プラグインを無効にします。

    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 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 を無効にする理想的な方法が提供されます。

Android アプリの次回起動時に Performance Monitoring データ収集を無効にするには、以下に示すサンプル コードを使用します。 Android アプリで Remote Config を使用する方法の詳細については、Android でFirebase Remote Config を使用するを参照してください。

  1. Remote Config がモジュール Gradle ファイル (通常はapp/build.gradle ) のdependenciesセクションにあることを確認します。

    implementation 'com.google.firebase:firebase-config:21.2.0'
    
  2. perf_disabletrueに設定されている場合は、Remote Config をセットアップし、パフォーマンス モニタリングを無効にします。

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

    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
                }
            }
  3. 次のコードをMainActivity.javaに追加して、Remote Config の値を取得して有効にします。

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

    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
                }
            }
  4. Firebase コンソールで Performance Monitoring を無効にするには、アプリのプロジェクトでperf_disableパラメータを作成し、その値をtrueに設定します。

    この変更により、Performance Monitoring SDK の「操作なし」呼び出し (NOOP) が呼び出され、アプリで Performance Monitoring SDK を使用することによるアプリのパフォーマンスへの重大な影響が排除されます。

    perf_disableの値をfalseに設定すると、パフォーマンス監視は有効のままになります。