コンソールへ移動

Firebase Performance Monitoring を無効にする

アプリの開発時やテスト時に Performance Monitoring を無効にすると便利な場合があります。

たとえば、アプリのビルドプロセス時に Performance Monitoring を無効にすると、次のことができます。

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

  • アプリのビルド時に Performance Monitoring を無効にし、ランタイム時にアプリがそれを再度有効することを許可する。

  • アプリのビルド時に Performance Monitoring を無効にし、ランタイム時にアプリがそれを再度有効にすることを許可しない。

Performance Monitoring を有効にした状態でアプリをビルドすることもできます。その場合、Firebase Remote Config を使用することで、本番環境アプリで Performance Monitoring を無効にしたり、再度有効にしたりと、柔軟に切り替えることができます。この方法を使用することによって、ユーザーが Performance Monitoring の使用の有効 / 無効を切り替えることができるようにアプリを構成できます。

アプリのビルドプロセス時に Performance Monitoring を無効にする

Performance Monitoring Gradle プラグインを無効にしたり、Performance Monitoring Android ライブラリを無効にしたりすることで、ビルドプロセス時に Performance Monitoring を無効にできます。

プラグインによるインストゥルメンテーションは、ビルドにかかる時間の増加につながる場合があるため、開発時やデバッグ時はプラグインを無効にすると便利です。ただし、自動期間トレースやアプリ内のカスタム トレースのパフォーマンス データを確認できるようにライブラリを有効にしておくことも検討してください。

Performance Monitoring Gradle プラグインを無効にする

Performance Monitoring プラグインを無効にするには、次の方法で instrumentationEnabled フラグを追加します。

拡張プロパティ フラグでプラグインを無効にする

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

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

    これより古いバージョンの Android Gradle Plugin では、特定のビルド バリアントの Performance Monitoring プラグインを無効にすることは可能ですが、そのバリアントのビルド時間の増加が完全に解消されません。

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

    android {
      // ...
      buildTypes {
        debug {
          FirebasePerformance {
            // Set this flag to 'false' to disable @AddTrace annotation processing and
            // automatic HTTP/S network request monitoring
            // 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 HTTP/S network request monitoring
// for all build variants at compile time.
firebasePerformanceInstrumentationEnabled=false

Performance Monitoring Android ライブラリを無効にする

コンパイル時に Performance Monitoring ライブラリを無効にする場合、ランタイム時のライブラリの有効化をアプリに対して許可するかどうかを選択できます。

コンパイル時にライブラリを無効にし、アプリによるランタイム時の有効化を許可する

アプリの AndroidManifest.xml ファイルに次の <meta-data> 要素を追加します。

  <application>
    <meta-data
      android:name="firebase_performance_collection_enabled"
      android:value="false" />
  </application>

コンパイル時にライブラリを無効にし、アプリによるランタイム時の有効化を許可しない

アプリの AndroidManifest.xml ファイルに次の <meta-data> 要素を追加します。

  <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 を使用する方法については、Firebase Remote Config を Android で使用するをご覧ください。

  1. モジュールの Gradle ファイル(通常は app/build.gradle)の dependencies セクションに次の記述を追加して、Remote Config が使用されるようにします。

    implementation 'com.google.firebase:firebase-config:18.0.0'
    
  2. Remote Config を設定します。perf_disabletrue に設定されている場合は、Performance Monitoring を無効にします。

    Java

    // Setup remote config
    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()
    //       .setDeveloperModeEnabled(BuildConfig.DEBUG)
    //       .build();
    // mFirebaseRemoteConfig.setConfigSettings(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.setDefaults(R.xml.remote_config_defaults);
    if (config.getBoolean("perf_disable")) {
        FirebasePerformance.getInstance().setPerformanceCollectionEnabled(false);
    } else {
        FirebasePerformance.getInstance().setPerformanceCollectionEnabled(true);
    }

    Kotlin

    // Setup remote config
    val 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()
    //       .setDeveloperModeEnabled(BuildConfig.DEBUG)
    //       .build();
    // mFirebaseRemoteConfig.setConfigSettings(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.setDefaults(R.xml.remote_config_defaults)
    FirebasePerformance.getInstance().isPerformanceCollectionEnabled = !config.getBoolean("perf_disable")
  3. 次のコードを MainActivity.java に追加して、Remote Config の値をフェッチして有効にします。

    Java

    //Remote Config fetches and activates parameter values from the service
    final FirebaseRemoteConfig config = FirebaseRemoteConfig.getInstance();
    config.fetch(3600)
            .addOnCompleteListener(this, new OnCompleteListener<Void>() {
                @Override
                public void onComplete(@NonNull Task<Void> task) {
                    if (task.isSuccessful()) {
                        config.activateFetched();
                    } else {
                        // ...
                    }
                }
            });

    Kotlin

    // Remote Config fetches and activates parameter values from the service
    val config = FirebaseRemoteConfig.getInstance()
    config.fetch(3600)
            .addOnCompleteListener(this) { task ->
                if (task.isSuccessful) {
                    config.activateFetched()
                } else {
                    // ...
                }
            }
  4. Firebase コンソールで Performance Monitoring を無効にするには、アプリのプロジェクトに perf_disable パラメータを作成し、値を true に設定します。

    このように変更すると、Performance Monitoring SDK の呼び出しが NoOps(オペレーション レス)の呼び出しとなり、Performance Monitoring SDK の使用によるアプリのパフォーマンス低下がなくなります。

    perf_disable の値を false に設定すると、Performance Monitoring は引き続き有効になります。