您的位置:首页 > 移动开发 > Android开发

android的崩溃报告(crash dump)

2015-07-14 14:49 375 查看
ACRA (Application Crash Report For Android)就是为了解决android 应用程序崩溃以后的发送报告的问题。

你能在https://github.com/ACRA找到源代码。

其中https://github.com/ACRA/acra/wiki/BasicSetup页详细的介绍了使用方法。

注意ACRA仅能俘获java的异常,它不能俘获native c/c++异常。

如果你想俘获native c/c++异常请看我的另一篇微博

http://blog.csdn.net/john_crash/article/details/46971535

我这里举一个我的例子。我的程序希望在崩溃以后将信息写入到crash.dump文件。然后程序下回启动的时候发送到我的服务器上。

默认你可以让acra给你发email,或者上传到你的服务器等等一些选项。

而我将崩溃信息写到本地文件中。

package org.cocos2dx.cpp;

import java.io.FileOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.acra.collector.CrashReportData;
import org.acra.sender.ReportSender;
import org.acra.sender.ReportSenderException;
import org.acra.ACRA;
import org.acra.ACRAConstants;
import org.acra.ReportField;

import android.content.Context;

public class ACRASender implements ReportSender {
private final Context mContext;
public ACRASender(Context ctx){
mContext = ctx;
}
@Override
public void send(Context arg0, CrashReportData arg1)
throws ReportSenderException {
/*
* write to dump file
*/
String dumpString = buildBody(arg1);
try{
FileOutputStream stream = mContext.openFileOutput("crash.dump",Context.MODE_PRIVATE);
stream.write(dumpString.getBytes());
stream.flush();
stream.close();
}catch(FileNotFoundException e){
}catch(IOException e){
}
}
private String buildBody(CrashReportData errorContent) {
ReportField[] fields = ACRA.getConfig().customReportContent();
if(fields.length == 0) {
fields = ACRAConstants.DEFAULT_MAIL_REPORT_FIELDS;
}

final StringBuilder builder = new StringBuilder();
for (ReportField field : fields) {
builder.append(field.toString()).append("=");
builder.append(errorContent.get(field));
builder.append('\n');
}
return builder.toString();
}
}


然后在你的activity中加入下面的代码

public void onCreate(){
ACRAConfiguration config = ACRA.getConfig();
ACRA.init(this.getApplication(),config);
ACRASender mySender = new ACRASender(this);
ACRA.getErrorReporter().setReportSender(mySender);

....
super.onCreate();
}


注意:

将acra-4.x.x.jar复制到你的libs目录下面。

你可以在http://search.maven.org/#search%7Cga%7C1%7Cch.acra找到这个文件。

做了这些后如果你的程序崩溃,在/data/data/”your application id”/files/下将产生一个crash.dump文件。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dump android