自動でエラーログをDeveloperへ送信してくれる
Application Crash Report for Android
を導入したいと思います。
これを導入する事で、Google Docsにクラッシュレポートが溜まっていきます。
アプリのバージョンや、メモリー、その他もろもろの情報を取得出来るので、かなり便利です。
この記事のソースコードはGitHubにPushして起きました。
まずはjarファイルをダウンロード
zipファイルを展開して、
doc/CrashReports-Templete.csvをGoogle Docsにアップロードします。
アップロードしたらリネームしてください。
[{App名} Crash Report]とでもしておくと分かりやすいと思います。
次に、フォームの作成をします。
この時、一番下にURLが出力されているので、URLを記録しておいてください。
説明部分を適当に書いて[保存]ボタンを押します。
作成が完了したら、コーディングへ移ります。
まず、プロジェクトにlibsフォルダを作り、acraのjarファイルを移動させてください。
移動させたら、ダブルクリックでbuild-pathに通るので、ダブルクリックしてください。
次に、android.app.Applicationを拡張したクラスを作成します。
MyApplication.java
import org.acra.*;
import org.acra.annotation.*;
import android.app.Application;
@ReportsCrashes(formKey = "dGVacG0ydVHnaNHjRjVXYTEtb3FPWGc6MQ")
public class MyApplication extends Application {
@Override
public void onCreate() {
ACRA.init(this);
super.onCreate();
}
}
formKeyにはフォームを作成した時に記録したURLにformKey=で指定されている値を指定します。次に、Android Manifest.xmlを修正します。
Android Manifest.xml
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:name="MyApplication">
とandroid:name属性を追加し、先程作成したApplicationクラス名を指定します。次にpermission にINTERNETを追加してください。
<uses-permission android:name="android.permission.INTERNET"/>
これでクラッシュした場合に自動でレポートが送信されます。
試しに、ArrayIndexOutOfBoundExceptionを発生させました。
public class TestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// ArrayIndexOutOfBoundsException
int[] array = {1, 2, 3, 4, 5};
int sum = 0;
for(int i = 0; i <= array.length; i++) {
sum += array[i];
}
System.out.println("sum=" + sum);
}
}
これで、どんなレポートが来るかと言うと
こんな感じで届きました。
項目に関してはかなりたくさん取れています。
おまけ
Google Docsには変更時のメール通知が出来るので
使えばさらにAndroid開発が捗ったり。
ではでは〜








0 件のコメント:
コメントを投稿