所以我在所有默认值下使用 ACRA 4.4.0,我的 logcat 字段为空。
我的应用具有
<uses-permission android:name="android.permission.READ_LOGS" />
权限,这至少应该给我自己的应用程序日志,因为果冻豆。
最后说明:READ_LOG权限不授予第三方应用程序 从Android 4.1(JellyBean)开始。从这个版本开始, logcat 仅提供来自您自己的应用程序的跟踪,不需要 许可。JellyBean logcat 日志由 ACRA 检索,从 版本 4.3.0b2
所以我做了一个强制日志:
Log.i("mytag" , "message");
ACRA.getErrorReporter().handleException(null);
在模拟器(v4.2)上,我得到了完整的日志猫。(顺便说一句,这与 JB 施加的 logcat 限制有些矛盾)
但是,在我的设备 v4.2.1 上,logcat 完全是空的。
有人有什么想法吗?
使用电子邮件模式的 acra 报告(@ReportsCrashes
内mailTo
标签),则不包括 LogCat 字段以减小报告大小。要解决此问题,您只需要使用自定义报告内容标签。
(在我找到这个之前花了一段时间搜索 - 它写在文档中,只是没有在提到 LogCat 的部分中)
@ReportsCrashes(formKey = "",
mailTo = "xxxx@yyyy.com",
customReportContent = {ReportField.APP_VERSION_CODE, ReportField.APP_VERSION_NAME, ReportField.ANDROID_VERSION, ReportField.PHONE_MODEL, ReportField.STACK_TRACE, ReportField.LOGCAT },
mode = ReportingInteractionMode.TOAST,
resToastText = R.string.crash_toast_text
)
注意:我排除了USER_CONTENT和CUSTOM_DATA字段
注2:import org.acra.ReportField;
这是因为从JellyBean开始你不能再使用READ_LOGS了。有关进一步的说明,请阅读此处:
http://commonsware.com/blog/2012/07/12/read-logs-regression.html