-
Notifications
You must be signed in to change notification settings - Fork 1.1k
BasicSetup
This guide assumes you are using com.android.tools.build:gradle:3.0.0
or later.
Acra requires java 8 (native, not RetroLambda or similar):
android {
...
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
Everything you find in this section belongs into the dependencies
block in your build.gradle
:
dependencies {
//here
}
Add the following snippet (with the latest version)
def acraVersion = '5.1.3'
- 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
- Dialog:
implementation "ch.acra:acra-dialog:$acraVersion"
- Notification:
implementation "ch.acra:acra-notification:$acraVersion"
- Toast:
implementation "ch.acra:acra-toast:$acraVersion"
- Silent:
Add nothing.
More info: Interactions
- Limiter: (limits how many reports acra sends from one device)
implementation "ch.acra:acra-limiter:$acraVersion"
- Advanced Scheduler: [since 5.2.0-rc1] (controls when reports are sent (e.g. only on wifi) and can restart an application after a crash)
implementation "ch.acra:acra-advanced-scheduler:$acraVersion"
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 fromandroid.app.Application
(or another subclass of that) - Update the
application
element in your AndroidManifest to reference the new class.
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);
}
}
In 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:
@AcraHttpSender
@AcraMailSender
@AcraDialog
@AcraNotification
@AcraToast
@AcraLimiter
@AcraScheduler
For an example configuration see annotation example
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);
For an example configuration see builder example
If you use both run- and compile-time configuration, compile-time values will serve as defaults for runtime configuration.
Available plugin builders: