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

7

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

为了在邮件中获取崩溃报告,我进行了以下操作:

@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报告时出错

任何帮助都对我有用且感激不尽。

3个回答

27

当我按照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文档发送报告不再受支持。


1
我正在尝试在我的应用程序中运行Acra,对我来说一切正常。但问题是我没有收到任何电子邮件,请帮帮我。 - Satheesh

6
您的应用程序类应该长成这样。
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说的那样,模式属性与报告类型无关。您可以在GitHub的源代码中看到这一点。使用mailTo类型时,您应确保:
  1. 您的应用程序具有连接网络的权限;
  2. 您的设备上有一个电子邮件程序,如Alex所说;
  3. 您是否在应用程序的oncreate()中调用了ACRA.init(this)方法?
如果所有这些都完成了,那么运行您的应用程序,它将提示您配置电子邮件,例如用户名和密码等。

1
我认为一个应用程序不必具有INTERNET权限才能通过ACRA发送报告。 - Alexander Kulyakhtin
是的,你说得对,拥有互联网权限并不是必须的。我再试了一遍,发现formKey不能为空,如果为空,当应用程序崩溃时,Android系统会显示一个对话框供您选择一个程序来处理,即使您选择了电子邮件程序,它仍然无法发送电子邮件。 - user2327225
此外,mode属性并非必需,如果您配置了它,在应用程序崩溃时,系统将不会弹出崩溃窗口。 - user2327225

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接