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文件。

更多相关文章

  1. 【Android(安卓)Developers Training】 36. 设置文件共享
  2. Android(安卓)JNI之动态创建native
  3. android动态加载外部资源文件
  4. Android(安卓)Studio 教程(干货)
  5. Android(安卓)7.0的新特性
  6. adb and App
  7. Android高级的总结
  8. Windows下,Ant自动化编译Android项目具体步骤和方法
  9. Android(安卓)SDK 实例代码分析---Accelerometer Play(一)

随机推荐

  1. .NET 开源了,Visual Studio 开始支持 Andr
  2. Android(安卓)gitHub 开源
  3. 开发前奏曲之添加Android(安卓)SDK平台工
  4. Android(安卓)amr语音编解码解惑
  5. Android中app的请求抓包工具 Fiddler 详
  6. Android(安卓)-- BroadcastReceiver的使
  7. 使用React Native开发Android手持机
  8. Android核心功能模块介绍
  9. 浅析Android线程模型
  10. android静默安装的实现(一)