Android logcat:使用电子邮件从设备发送日志条目

Posted

技术标签:

【中文标题】Android logcat:使用电子邮件从设备发送日志条目【英文标题】:Android logcat: Send log entries from device using email 【发布时间】:2014-11-04 02:22:54 【问题描述】:

场景

我向几个朋友发布了一个 android 应用的测试版。现在,我想修复一些在测试期间出现的错误。

我设置了第三方崩溃报告实用程序,因此我可以轻松处理应用程序崩溃。但是,有一些错误行为不会导致崩溃。在这些情况下,我想检查应用日志,看看出了什么问题。

该应用是否可以通过电子邮件发送其 logcat 条目?

说明

有许多日志应用程序(android-log-collector、Log Viewer (logcat))可以检查和显示 logcat 条目。但是,自 Android 4.1 起,这些应用无法访问其他应用的日志。 我不介意在设备中占用大量空间 - 此功能仅供 Beta 版测试人员使用。 该解决方案无需root 或任何其他特殊权限即可工作。

【问题讨论】:

你读过这个github.com/ACRA/acra吗? Send Logcat output of an App to an EmailAdress的可能重复 【参考方案1】:

在你的主要活动的 onDestroy 中调用这个方法。

 public void SendLogcatMail()

    // save logcat in file
    File outputFile = new File(Environment.getExternalStorageDirectory(),
            "logcat.txt");
    try 
        Runtime.getRuntime().exec(
                "logcat -f " + outputFile.getAbsolutePath());
     catch (IOException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
    

 //send file using email
 Intent emailIntent = new Intent(Intent.ACTION_SEND);
 // Set type to "email"
 emailIntent.setType("vnd.android.cursor.dir/email");
 String to[] = "yourmail@gmail.com";
 emailIntent .putExtra(Intent.EXTRA_EMAIL, to);
 // the attachment
 emailIntent .putExtra(Intent.EXTRA_STREAM, outputFile.getAbsolutePath());
 // the mail subject
 emailIntent .putExtra(Intent.EXTRA_SUBJECT, "Subject");
 startActivity(Intent.createChooser(emailIntent , "Send email..."));
 

【讨论】:

不错。我什至可以将它附加到一个按钮上,这样用户就可以在我要求时将日志发送给我。 当然,我会尽快做。您知道它是否需要 root 或其他特殊权限? 这个解决方案过时了吗?我收到一个片段,弹出并显示“没有应用程序可以执行此操作。” 这可以用 emailIntent .putExtra(Intent.EXTRA_STREAM, Uri.fromFile(outputFile)); 修复。但是后来,附件结果是空的(或者 gmail 应用程序告诉我。) @AndyCr15 请参阅github.com/sanskrit-coders/stardict-dictionary-updater/blob/…中的SendLoagcatMail【参考方案2】:

听起来RemoteLogger 正是你所需要的

https://github.com/sschendel/RemoteLogger

将调试日志记录到用户可以通过电子邮件轻松发送给您的文件中。这是为了解决用户报告的不可重现的错误而创建的。需要明确的是,日志记录被放入一个发布的应用程序版本中,以测试用户进行故障排除。在最终生产代码中删除。

库提供了启动、停止、发送和删除日志文件的挂钩。

【讨论】:

你确定它可以发送logcat日志吗?看起来您应该明确添加日志条目

以上是关于Android logcat:使用电子邮件从设备发送日志条目的主要内容,如果未能解决你的问题,请参考以下文章

如何从 DDMS 中的 Android 可穿戴设备获取 logcat 消息/堆栈跟踪

使用LogCat对浏览器进行android USB调试

在 android studio 中使用设备调试时,Android Logcat 为空

在 JellyBean 上使用 LogCat

来自 logcat 的 Android 电子邮件特定标签

Logcat 中显示的时间