Skip to content Skip to sidebar Skip to footer

How To Disable Crashlytics Answers?

Disabling Crashlytics error reporting is relatively straight forward.. I'd also like to disable Answers for debug builds. However, new Crashlytics.Builder().answers(null); doesn'

Solution 1:

on my app we do it the old fashioned way:

if (!IS_DEBUG) {
   Fabric.with(this, new Crashlytics());
}

works fine.

Of course you can initialise with whichever custom parameters you need.

edit:

to get the debug boolean is just a matter of using gradle to your favour:

src/
   main/ // your app code
   debug/
       AppSettings.Java:
            publicstaticfinalbooleanIS_DEBUG=true;
   release/
       AppSettings.Java:
            publicstaticfinalbooleanIS_DEBUG=false;

edit:

I would advise against using BuildConfig.DEBUG, see this article: http://www.digipom.com/be-careful-with-buildconfig-debug/

Solution 2:

For the time being, I solved the problem the old Java way:

Extend Answers using a sort-of singleton:

publicclassCustomAnswersextendsAnswers {

    privatestatic CustomAnswers instance;

    privateboolean mEnabled;

    privateCustomAnswers(boolean enabled) {
        super();
        mEnabled = enabled;
    }

    publicstaticsynchronizedvoidinit(boolean enabled) {
        if (instance == null) {
            instance = newCustomAnswers(enabled);
        }
    }

    publicstaticsynchronized CustomAnswers get() {
        return instance;
    }

    @OverridepublicvoidlogSignUp(SignUpEvent event) {
        if (mEnabled) {
            super.logSignUp(event);
        }
    }

    // (...)
}

Initialize Crashlytics with Answers implementation:

boolean isDebug = DebugHelper.isDebugVersion(this);
CustomAnswers.init(!isDebug);
CrashlyticsCore crashlyticsCore =
        new CrashlyticsCore.Builder().disabled(isDebug).build();
Fabric.with(this, new Crashlytics.Builder()
        .core(crashlyticsCore).answers(CustomAnswers.get()).build());

Use Answers implementation for events:

CustomAnswers.get().logInvite(new InviteEvent());

This will disable events being logged.

Note that, as described in my first post, Answers.getInstance() will return null and not your CustomAnswers instance in that case.

Solution 3:

Try this code

 CrashlyticsCore core = new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build();
Fabric.with(this, new Crashlytics.Builder().core(core).build());

or

Fabric.with(this, new Crashlytics.Builder().core(new CrashlyticsCore.Builder().disabled(BuildConfig.DEBUG).build()).build());

Post a Comment for "How To Disable Crashlytics Answers?"