crashdump
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();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
然后在你的activity中加入下面的代码
public void onCreate(){
ACRAconfiguration config = ACRA.getConfig();
ACRA.init(this.getApplication(),config);
ACRASender mySender = new ACRASender(this);
ACRA.getErrorReporter().setReportSender(mySender);
....
super.onCreate();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
注意:
将acra-4.x.x.jar复制到你的libs目录下面。
你可以在http://search.maven.org/#search%7Cga%7C1%7Cch.acra找到这个文件。
做了这些后如果你的程序崩溃,在/data/data/”your application id”/files/下将产生一个crash.dump文件。
相关阅读
简介 buildTypes 位于模块级build.gradle文件的android{}代码块内,它是用来创建和配置构建类型的。新建一个项目在模块的buildType
在Android开发中少不了输入框的使用,今天就输入框EditText进行详细的讲解,也是为了以后开发总结经验。本人在开发过程中要求对输入
Android O Launcher3-Workspace加载
一.简述: Launcher这里我们研究主要是Launcher3(Android O平台),各个手机公司自家的ROM Launcher,咱们也看不到,但是八九不离十啦,他
2016年5月19日,谷歌在美国加州的山景城举办了 Google I/O 开发者大会中发布。2016年6月,Android N正式命名为“牛轧糖” 本届I/O开
Android Freeline加速编译App方案 使用和总结
Freeline简介 在Android Studio还没推出Instant Run功能之前,每次修改Android 工程项目时都要将整个项目重新编译一次,然后再将资