ACRA 未发送 logcat

ACRA not sending logcat

编辑

归功于 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
)

原版POST

我正在试用 ACRA,希望它能捕获堆栈跟踪和 logcat。目前,我已将其配置为调用我的电子邮件应用程序来发送数据。崩溃后,它会显示祝酒词,并打开邮件应用程序,邮件正文中有堆栈跟踪。然而,没有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>

包 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);
  }
}

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

Including a full report could be quite difficult due to the data size. Default fields included in email reports are:

  • 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 可能会导致报告无法发送(因为它们可能会超出邮件提供商规定的字符限制)。


以上答案仅适用于 ACRA 4.x. 在 ACRA 5.x 中,所有发件人的默认配置都相同,并且确实包括 logcat.