Help us understand the problem. What is going on with this article?

ACRAを使ってクラッシュレポートをメールで受け取る

More than 5 years have passed since last update.

ACRAについて

ACRAはAndroidのアプリが強制終了した時のクラッシュレポートを収集するためのライブラリです。
本来は自動収集する使い方が普通なのですが、以前の方式(Google Docs上にレポートを集める)は利用できないようになっています。
今の方式はバックエンドのサーバを用意して、Acralyzer(ACRAのバックエンドアプリケーション)を走らせて、そこに集めるようです。

今回はさくっと使いたかったので、メールでレポートを集める方法を選択肢ました。

ACRAの導入

ライブラリのダウンロード

ここからACRAのライブラリがダウンロードできます。

ライブラリをプロジェクトに追加

ダウンロードしたZipファイルを解答して/build/acra-4.x.0.jarをプロジェクトの/libsにコピーします。

ApplicationクラスでACRAを初期化

ACRAはApplicationクラスを継承したクラスで初期化します。
いきなりメール送信画面が現れるのは不親切なので、確認ダイアログを表示するようにします。

MyApplication.java
import org.acra.*;
import org.acra.annotation.*;

@ReportsCrashes(
    formKey = "", // Google DocsのformKeyの設定なので空文字
    mailTo="<YOUR_EMAIL_ADDRESS>",
    mode=ReportingInteractionMode.DIALOG, // Dialogを表示
    resDialogTitle=R.string.acra_dialog_title, // Dialogのタイトル
    resDialogText=R.string.acra_dialog_text, // Dialogのテキスト
    resDialogCommentPrompt=R.string.acra_dialog_comment_prompt // 発生状況を入力する欄のラベル
)
public class MyApplication extends Application {
    @Override
    public void onCreate() {
        // The following line triggers the initialization of ACRA
        super.onCreate();
        ACRA.init(this);
    }
}

strings.xmlに文字列を追加します。

strings.xml
<string name="acra_dialog_title">クラッシュレポート</string>
<string name="acra_dialog_text">予期せぬエラーが発生しました。アプリを終了します。\nクラッシュレポートを送信しますか?</string>
<string name="acra_dialog_comment_prompt">発生状況を教えてください。</string>

AndroidManifest.xmlに定義を追加します。

AndroidManifest.xml
<manifest ...>
  <application ... android:name="MyApplication">
    ...
    <activity
      android:name="org.acra.CrashReportDialog">
    </activity>
  </application>
  <uses-permission android:name="android.permission.INTERNET">
  </uses-permission>
</manifest>

MyApplicationクラスの設定とINTERNETパーミッションの追加します。
また表示されるDialogはDialogテーマのActivityとして実装されているので、タグでの宣言が必要です。

ACRAの導入は以上です。
とりあえずメールで送信するぐらいだったらサクッと導入できます。

強制終了が発生すると、このようなダイアログが表示されます。
acra-dialog-sample.png

メールで送信するとこんなかんじで届きます。

USER_COMMENT=強制終了した!
ANDROID_VERSION=4.4.2
APP_VERSION_NAME=1.0
BRAND=google
PHONE_MODEL=Nexus 5
CUSTOM_DATA=
STACK_TRACE=java.lang.ArrayIndexOutOfBoundsException: length=0; index=1
...

余裕できたら、Acralyzerで自動収集する方式も試してみたい。

gari_jp
Androidアプリ作ってます。 通信量モニター(http://goo.gl/dWA1WU )の中の人。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした