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,或者上传到你的服务器等等一些选项。
而我将崩溃信息写到本地文件中。
然后在你的activity中加入下面的代码
注意:
将acra-4.x.x.jar复制到你的libs目录下面。
你可以在http://search.maven.org/#search%7Cga%7C1%7Cch.acra找到这个文件。
做了这些后如果你的程序崩溃,在/data/data/”your application id”/files/下将产生一个crash.dump文件。
你能在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文件。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories