Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
18
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@gari_jp

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

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

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
18
Help us understand the problem. What are the problem?