必威体育Betway必威体育官网
当前位置:首页 > IT技术

android的崩溃报告(crash dump)

时间:2019-08-19 15:11:05来源:IT技术作者:seo实验室小编阅读:63次「手机版」
 

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

相关阅读

Android 浅谈BuildTypes

简介 buildTypes 位于模块级build.gradle文件的android{}代码块内,它是用来创建和配置构建类型的。新建一个项目在模块的buildType

Android EditText的使用

在Android开发中少不了输入框的使用,今天就输入框EditText进行详细的讲解,也是为了以后开发总结经验。本人在开发过程中要求对输入

Android O Launcher3-Workspace加载

一.简述: Launcher这里我们研究主要是Launcher3(Android O平台),各个手机公司自家的ROM Launcher,咱们也看不到,但是八九不离十啦,他

Android N 新特性

2016年5月19日,谷歌在美国加州的山景城举办了 Google I/O 开发者大会中发布。2016年6月,Android N正式命名为“牛轧糖” 本届I/O开

Android Freeline加速编译App方案 使用和总结

Freeline简介 在Android Studio还没推出Instant Run功能之前,每次修改Android 工程项目时都要将整个项目重新编译一次,然后再将资

分享到:

栏目导航

推荐阅读

热门阅读