30

I am using Firebase in my android project. Wanted to know how to disable it in development mode. All crashes and usage/events are being logged and messing up with actual analytics.

Any better way to disable this in development mode?

Faisal Memon
  • 774
  • 3
  • 12
  • 28

6 Answers6

54

Checkout https://firebase.google.com/docs/analytics/configure-data-collection?platform=android

<meta-data android:name="firebase_analytics_collection_deactivated" android:value="true" />

To do this automatically add the following line to manifest:

 <meta-data
        android:name="firebase_analytics_collection_deactivated"
        android:value="@bool/FIREBASE_ANALYTICS_DEACTIVATED"/>

Set different value of boolean for debug and release in your app/build.gradle

buildTypes {
    debug {
        resValue("bool", "FIREBASE_ANALYTICS_DEACTIVATED", "true")
    }
    release {
        resValue("bool", "FIREBASE_ANALYTICS_DEACTIVATED", "false")
    }
}
Irshu
  • 8,248
  • 8
  • 53
  • 65
kamalkishor1991
  • 876
  • 9
  • 14
  • 1
    Thanks! I also had to add `tools:replace="android:value"` to the AndroidManifest.xml part: (if using react-native-firebase) eg: `` – Tom S Mar 25 '22 at 21:11
19

Add this line to your manifest file while development.

<meta-data android:name="firebase_analytics_collection_deactivated" android:value="true" />

For more details check https://firebase.google.com/support/guides/disable-analytics

NIJESH ku
  • 409
  • 2
  • 7
  • 3
    Even better, add a property to Gradle to handle it automatically: resValue("bool", "FIREBASE_ANALYTICS_DEACTIVATED", "true") such as was suggested for Crashlytics here: https://stackoverflow.com/a/44452585/945247 – Leon Mar 01 '18 at 20:21
  • how to enable it back? – user924 Jan 03 '22 at 10:28
5

It would be better to separate your dev and prod environments instead of disabling things completely. You have options on how to implement this, so you can choose what suits your team the best. This blog post details your options: https://firebase.googleblog.com/2016/08/organizing-your-firebase-enabled-android-app-builds.html

Doug Stevenson
  • 297,357
  • 32
  • 422
  • 441
1
    public class MyApp extends Application {
        public static boolean isDebuggable;

        public void onCreate() {
            super.onCreate();
            isDebuggable = (0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE));
            FirebaseCrash.setCrashCollectionEnabled(!isDebuggable);
        }
    }
Hamzeh Soboh
  • 7,572
  • 5
  • 43
  • 54
0

Since Google Play Services / Firebase 11+, we can programmatically disable the Firebase Crashlytics at runtime.

FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false);

To disable Firebase Crashlytics in Debug builds:

FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(!BuildConfig.DEBUG);

or for better readability:

if(BuildConfig.DEBUG) {
    FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(false);
}
Amar Ilindra
  • 923
  • 2
  • 11
  • 30
0

To disable crashlytics and analytics

in manifest
<meta-data
   android:name="firebase_crashlytics_collection_enabled"
   android:value="${crashlyticsCollectionEnabled}" />

<meta-data 
   android:name="firebase_analytics_collection_enabled" 
   android:value="${analyticsCollectionEnabled}" />
in gradle
buildTypes {
    debug {
       manifestPlaceholders["crashlyticsCollectionEnabled"] = false
       manifestPlaceholders["analyticsCollectionEnabled"] = false
    }
    
    release {
       manifestPlaceholders["crashlyticsCollectionEnabled"] = true
       manifestPlaceholders["analyticsCollectionEnabled"] = true
    }
}

you can check from Firebase Analytics - Firebase Crashlytics - Inject build variables into the manifest

kadirgun
  • 151
  • 1
  • 6