Я пытаюсь реализовать библиотеку ACRA на моем клиенте Android с пользовательским отправителем отчетов, но не могу заставить ее отправлять реальные журналы ошибок.Вот мой код:
def acraVersion = '5.1.3'
dependencies {
implementation "ch.acra:acra-core:$acraVersion"
implementation "ch.acra:acra-http:$acraVersion"
implementation "ch.acra:acra-toast:$acraVersion"
}
Мой класс отправителя пользовательского отчета:
public class MyCrashReportSender implements ReportSender {
public MyCrashReportSender(Context context) {
}
@Override
public void send(@NonNull Context context, @NonNull CrashReportData errorContent) {
Timber.e("============== Crash report "+ errorContent.toString());
}
public static class MyCrashReportSenderFactory implements ReportSenderFactory {
@NonNull
@Override
public ReportSender create(@NonNull Context context, @NonNull CoreConfiguration config) {
return new MyCrashReportSender(context);
}
@Override
public boolean enabled(@NonNull CoreConfiguration config) {
return true;
}
}
}
И, наконец, мой класс Application.class, где я инициализирую lib
@AcraCore(buildConfigClass = BuildConfig.class,
reportSenderFactoryClasses = MyCrashReportSender.MyCrashReportSenderFactory.class,
reportFormat=StringFormat.JSON)
public class App extends Application {
...
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
CoreConfigurationBuilder builder = new CoreConfigurationBuilder(this);
builder.setBuildConfigClass(BuildConfig.class).setReportFormat(StringFormat.JSON);
builder.getPluginConfigurationBuilder(ToastConfigurationBuilder.class).setText("This better work");
ACRA.init(this, builder);
}
}
КогдаЯ запускаю клиент на устройстве. Я получаю этот журнал от ACRA:
02-04 16:48:29.900 17609-17609/com.mypackageName.client I/ACRA: ACRA is enabled for com.mypackageName, initializing...
, и когда возникает исключение, ACRA записывает журналы ошибок:
02-04 17:09:33.261 17609-17609/com.mypackageName E/ACRA: ACRA caught a NullPointerException for com.mypackageName
java.lang.NullPointerException: Attempt to invoke virtual method 'int java.lang.String.length()' on a null object reference
Проблема заключается в том, что этот методникогда не звонил:
@Override
public void send(@NonNull Context context, @NonNull CrashReportData errorContent) {
Timber.e("============== Crash report "+ errorContent.toString());
}
Кто-нибудь знает, почему?
Заранее спасибо!