如何使用 ACRA 发送 Android 崩溃报告

Posted

技术标签:

【中文标题】如何使用 ACRA 发送 Android 崩溃报告【英文标题】:How to send Android Crash report using ACRA 【发布时间】:2013-07-02 01:01:57 【问题描述】:

我正在尝试将崩溃报告从我的应用程序发送到我的域或邮件,但仍然失败。

为了获得邮件中的崩溃报告,我做到了

@ReportsCrashes(

      formKey = "",
      mailTo = "abc@gmail.com"
  )

回应是, 发送文件 1372758321000-approved.stacktrace

checkAndSendReports - 完成

为了在我的域中获取崩溃报告,我做了

@ReportsCrashes(

      formKey = "",
      formUri = "http://www.abc.com/test1"
)

回应是, 发送文件 1372856882000-approved.stacktrace 无法发送 1372856882000-approved.stacktrace 的崩溃报告 org.acra.sender.ReportSenderException:通过 Http POST 发送 FORM 报告时出错

任何帮助对我来说都会很方便并受到赞赏。

【问题讨论】:

【参考方案1】:

当我完全按照他们在他们的文档中所说的那样做时,ACRA 可以通过电子邮件发送报告:

@ReportsCrashes(mailTo = "reports@yourdomain.com", // my email here
                mode = ReportingInteractionMode.TOAST,
                resToastText = R.string.crash_toast_text)

https://github.com/ACRA/acra/wiki/Report-Destinations#sending-reports-by-email

您可能忘记了吐司部分。或者可能是您没有电子邮件程序(例如当您在模拟器上运行时)。

我认为不再支持通过 Google 文档发送报告。

【讨论】:

我正在尝试在我的应用程序中运行 acra,这对我来说运行良好。但问题是我没有从那里收到任何电子邮件。请帮助我【参考方案2】:

您的应用程序类应如下所示。

import android.app.Application;

    import org.acra.ACRA;
    import org.acra.ReportField;
    import org.acra.ReportingInteractionMode;
    import org.acra.annotation.ReportsCrashes;


    @ReportsCrashes(mailTo = "user@domain.com", customReportContent = 
            ReportField.APP_VERSION_CODE, ReportField.APP_VERSION_NAME,
            ReportField.ANDROID_VERSION, ReportField.PHONE_MODEL,
            ReportField.CUSTOM_DATA, ReportField.STACK_TRACE, ReportField.LOGCAT,
            mode = ReportingInteractionMode.TOAST, resToastText = R.string.crash_toast_text)
    public class MyApplication extends Application 

        @Override
        public void onCreate() 
            super.onCreate();
            ACRA.init(this);
        
    

【讨论】:

【参考方案3】:

不,不像Alex说的那样,mode属性与报告类型无关,你可以在github的源代码中看到 使用 mailTo 类型,你应该确保:

    您的应用具有连接网络的权限; 在您的设备中安装一个电子邮件程序,就像 Alex 所说的那样; 您是否在应用程序的 oncreate() 中调用了 ACRA.init(this) 方法?

如果所有这些都完成了,然后运行你的应用程序,它会提示你配置电子邮件,例如用户名和密码等。

【讨论】:

我不认为应用必须具有 INTERNET 权限才能通过 ACRA 邮寄报告 是的,你说得对,有网权不是必须的。我又试了一遍,发现formKey一定不能为空,如果为空,当app崩溃时,android系统会显示一个对话框让您选择要处理的程序,即使您选择了电子邮件程序,它仍然不会发送电子邮件。 另外,mode属性不是必须的,如果你配置了,当你的应用崩溃时,系统不会弹出崩溃窗口

以上是关于如何使用 ACRA 发送 Android 崩溃报告的主要内容,如果未能解决你的问题,请参考以下文章

ACRA:如何将 ACRA 报告写入文件(在 SD 卡中)?

如何以编程方式使 Android 应用程序崩溃?

Android程序出错报告---ACRA的用法

如何作为 Android 应用的 alpha 测试人员发送崩溃报告?

防止android在崩溃后重新创建活动堆栈

IDE (Eclipse) 的 LogCat 中没有捕获异常的 StackTrace(由 ACRA)