Освой программирование играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Библиотека ACRA

Название библиотеки ACRA является сокращением от Application Crash Reports for Android.

Разработчик создаёт всегда идеальную программу, которая никогда не глючит на его устройстве. Но стоит выложить приложение для пользователей, как вдруг выясняется, что на других устройствах приложение может крашится без явных на то причин. Зачастую пользователь не может внятно соообщить разработчику приложения о проблеме. Библиотека ACRA поможет разобраться, кто же виноват в неправильном поведении программы и прислать сообщение, не беспокоя при этом пользователя.

cat crash report

Домашняя страница: Гитхаб

Установим зависимость в Gradle.


compile 'ch.acra:acra:4.9.2'

Создадим класс, наследующийся от класса Application и пропишем его имя в манифесте:


<application
    ...
    android:name=".MyApplication"
    android:theme="@style/AppTheme">

Библиотека предоставляет несколько способов получения отчёта об ошибке: отправка на электронный адрес, отправка на сервер, реализация собственного поставщика отчетов. Самый простой и понятный способ - отправка на электронный адрес. Им и воспользуемся.

Добавим специальную аннотацию @ReportsCrashes к классу MyApplication. Аннотация содержит следующие атрибуты:

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

Затем в методе onCreate() инициализируем библиотеку.


package ru.alexanderklimov.acra;

import android.app.Application;

import org.acra.ACRA;
import org.acra.ReportingInteractionMode;
import org.acra.annotation.ReportsCrashes;

@ReportsCrashes(mailTo = "[email protected]",
        mode = ReportingInteractionMode.TOAST,
        resToastText = R.string.crash_toast_text)
public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        ACRA.init(this);
    }
}

Не забудьте добавить строковый ресурс.


<string name="crash_toast_text">Ошибка! Отправляем отчёт</string>

Для проверки и демонстрации примера добавим кнопку на экран приложения. Код для щелчка, где сами сознательно сгенерируем ошибку в приложении.


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

Включим разрешение на использование интернета.


<uses-permission android:name="android.permission.INTERNET"/>

При нажатии на кнопку мы получим Toast-сообщение с нашим текстом, а потом будет сформировано письмо.

ACRA report

На странице библиотеки можно найти другие примеры, описание параметров и прочую информацию.

Реклама