Skip to content
F43nd1r edited this page Dec 29, 2017 · 78 revisions

Note: this guide assumes you are using com.android.tools.build:gradle:3.0.0 or later.

  1. Dependenices
  2. Configuration

1. Dependencies

Everything you find in this section belongs into the dependencies block in your build.gradle:

dependencies {
    //here
}

Define ACRA Version

Add the following snippet (with the latest version)

def acraVersion = '5.0.0'

Choose sender

  • Http:
implementation "ch.acra:acra-http:$acraVersion"
  • Email:
implementation "ch.acra:acra-mail:$acraVersion"
  • Custom:
implementation "ch.acra:acra-core:$acraVersion"

More info: Report Destinations

Choose interaction

  • Dialog:
implementation "ch.acra:acra-dialog:$acraVersion"
  • Notification:
implementation "ch.acra:acra-notification:$acraVersion"
  • Toast:
implementation "ch.acra:acra-toast:$acraVersion"
  • Silent:

Add nothing.

Optional Plugins

  • Limiter: (limits how many reports acra sends from one device)
implementation "ch.acra:acra-toast:$acraVersion"

2. Configuration

If you don't already have an Application class, then create one. Apply the configuration to your Application class.

Creating an Application class

  • Create a new class in your package root.
  • Give it a name like: MyApplication extending from android.app.Application (or another subclass of that)
  • Update the application element in your AndroidManifest to reference the new class.

Configuring ACRA - Compile time

Add annotations to your Application class and override the attachBaseContext() method to add ACRA.init(this);. In our newly created class, it looks like:

    import org.acra.*;
    import org.acra.annotation.*;

    @AcraCore(buildConfigClass = BuildConfig.class)
    public class MyApplication extends Application {
        @Override
        protected void attachBaseContext(Context base) {
            super.attachBaseContext(base);

            // The following line triggers the initialization of ACRA
            ACRA.init(this);
        }
    }

I addition to the @AcraCore annotation, each plugin you added in the dependencies step provides another annotation, which you have to add to activate and configure that plugin:

Configuring ACRA - Runtime (Application start)

Construct a CoreConfigurationBuilder and pass it to ACRA.init:

CoreConfigurationBuilder builder = new CoreConfigurationBuilder(this);
builder.setBuildConfigClass(BuildConfig.class).setReportFormat(StringFormat.JSON);
builder.getPluginConfigurationBuilder(ToastConfigurationBuilder.class).setResText(R.string.acra_toast_text);
ACRA.init(this, builder);

Please note that plugins are disabled if their respective annotation is not present. You can activate them by calling:

builder.getPluginConfigurationBuilder(ToastConfigurationBuilder.class).setEnabled(true);

If you use both run- and compile-time configuration, compile-time values will serve as defaults for runtime configuration.

Clone this wiki locally