Используем ACRA в своем приложении

using acra android

Довольно часто разработчики приложений для мобильных платформ (а особенно для Android, учитывая все их разнообразие) сталкиваются с тем, что на некоторых устройствах приложение может крашится без явных на то причин. Сам же пользователь приложения не может (или не хочет) соообщить внятно разработчику приложения об ошибке. Решить эту проблему призвана библиотека ACRA. С ее помощью разработчик может получать сообщения о крашах приложения, не беспокоя при этом пользователя.

 

Создадим новый проект:

acra-1-new-project

Версию API оставляете по умолчанию. На следующем шаге выберите «EmptyActivity» и нажмите Next. Все остальные опции также оставляем по умолчанию.



Подключаем библиотеку через build.gradle файл нашего модуля:

dependencies {
    compile 'ch.acra:acra:4.8.5'
}

Далее нам нужно создать свой класс, наследующийся от класса Application:

import android.app.Application;

public class MyApplication extends Application {

}

и прописать его в манифесте в атрибуте name тега application:

<application
        ...
        android:name=".MyApplication"
        >
        ...
</application>

Теперь нам нужно сделать выбрать каким способом мы будем получать отчеты об ошибках. Библиотека предоставляет различные способы получения отчета: отправка по E-mail, отправка на сервер или же реализация собственного поставщика отчетов. Давайте выберем отправку по E-mail.



Добавим специальную аннотацию над классом MyApplication:

@ReportsCrashes(mailTo = "reports@yourdomain.com",
                mode = ReportingInteractionMode.TOAST,
                resToastText = R.string.crash_toast_text)
public class MyApplication extends Application {

Разберем кратко атрибуты:

mailTo — E-mail, на который будут приходить сообщения
mode — способ сообщения об ошибке
resToastText -сообщение, показываемое при ошибке

Добавьте в res/strings.xml следующую строчку:

<string name="crash_message">Произошла ошибка. Отправка отчета</string>

Далее нужно проинициализировать библиотеку в методе onCreate класса Application:

@Override
    public void onCreate() {
        super.onCreate();

        ACRA.init(this);
    }

В файле activity_main.xml вставьте следующую разметку:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    tools:context="ru.javahelp.myapplication.MainActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="crashApp"
        android:text="Crash it!" />
</LinearLayout>

При нажатии на кнопку генерируем исключение:

public void crashApp(View view) {
       throw new RuntimeException("App is crashed");
}



Компилируем и открываем приложение:

acra-app

Нажимаем на кнопку «Crash it!». Результат:

acra-crash-report

Для наиболее полного ознакомления с библиотекой перейдите в вики-раздел, где вы сможете найти подробное описание всех функций библиотеки.

Библиотека на GitHub: ACRA.
Пример использования библиотеки: ACRASample

Комментарии:

2 комментария

    • Admin АвторОтветить

      Я пока работал только с ACRA. Статью начал писать по просьбе посетителей сайта. Знаю, что есть другие библиотеки ля отправки отчетов, но было лень их изучать. Возможно, изучу их в свободное, ин шаа Ллах

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *