LoginSignup
18
18

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-01-25

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で自動収集する方式も試してみたい。

18
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
18
18