ACRA不发送logcat

时间:2017-06-01 01:15:56

标签: android acra

修改

归功于F43nd1r,解决方案是将LOGCAT放入ReportsCrashes注释中,例如

@ReportsCrashes (
  mailTo = "log@perinote.com",
  mode = ReportingInteractionMode.TOAST,
  customReportContent = {ReportField.ANDROID_VERSION, 
                         ReportField.STACK_TRACE, 
                         ReportField.LOGCAT},
  resToastText = R.string.crash_toast_text
)

原始帖子

我尝试了ACRA并希望它能够捕获堆栈跟踪和logcat。目前,我已将其配置为调用我的电子邮件应用程序来发送数据。崩溃后,它会显示一个Toast,并在邮件正文中打开带有堆栈跟踪的电子邮件应用程序。但是,没有logcat。

根据文档我可以告诉我,当我在清单中放入READ_LOGS权限时,它应该在报告中包含logcat的最后200行。

我在Android 7.0设备上进行测试。

清单:

<manifest package="com.perinote.crashtest"
          xmlns:android="http://schemas.android.com/apk/res/android">

  <uses-permission android:name="android.permission.READ_LOGS"></uses-permission>

  <application
    ...
  </application>
</manifest>

package com.perinote.crashtest;

import ...;

@ReportsCrashes (
  mailTo = "log@perinote.com",
  mode = ReportingInteractionMode.TOAST,
  resToastText = R.string.crash_toast_text
)

public class AppSubclass extends Application
{
  @Override
  protected void attachBaseContext(Context base)
  {
    super.attachBaseContext(base);
    ACRA.init (this);
  }
}

我认为我的其他任何文件都不相关,但如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:2)

  

由于数据大小,包括完整报告可能非常困难。电子邮件报告中包含的默认字段为:

     
      
  • ReportField.USER_COMMENT
  •   
  • ReportField.ANDROID_VERSION
  •   
  • ReportField.APP_VERSION_NAME
  •   
  • ReportField.BRAND
  •   
  • ReportField.PHONE_MODEL
  •   
  • ReportField.CUSTOM_DATA
  •   
  • ReportField.STACK_TRACE
  •   

来源:Sending Reports by Mail

因此,如果要包含logcat,则必须修改报告字段以包含ReportField.LOGCAT。

请注意,从ACRA 4.9.3(未发布)开始,您可以将报告作为邮件附件而非身体发送,因此尺寸不再是问题。 在此之前,包括logcat可能会导致不可报告的报告(因为它们可能会超过邮件提供商强加的字符限制)。