我正在寻找一种方法来保存手机内存/ SD卡中的所有logcat输出(按标签过滤)。 因此,即使正在玩app的人会来找我并说它崩溃,或者它没有按预期工作,我可以查看日志。我目前正在使用RemoteLogs,但他们没有处理标准的logcat输出。
答案 0 :(得分:2)
我认为这不是直接可能的。你可以做什么来覆盖像这样的标准Log.x()
方法
class MyLog {
boolean sdLog = false;
public void d(String arg1, String arg2) {
if (sdLog) {
someLogFile.append(arg1).append(":").append(arg2);
}
else {
Log.d(arg1,arg2);
}
}
}
然后在您的代码中,通过调用Log.d()
替换对MyLog.d()
的所有来电。然后用户可以例如在首选项中选择登录SD卡或使用标准机制。
Android通常不会将所有内容记录到SD卡上(因为这将意味着对卡的大量写入,这会缩短其使用寿命。
答案 1 :(得分:0)
您只需转储logcat并通过执行sh -c logcat -d -v time > /sdcard/logcat.txt
之类的操作将其保存到文件中。事实上,市场/ Play商店中的应用程序就是这样,允许您通过电子邮件等共享logcat。指示用户使用其中一个应用程序(例如{{3})可能是个好主意。 })发送日志。更好的想法是使用ACRA或BugSense监控应用程序崩溃以及环境信息(Android版本,屏幕大小等)。
请记住,自从Jelly Bean(4.1)在设备上运行时,您只能访问自己的logcat输出(即,从执行的应用程序包中)(通过adb运行具有更多权限并且可以获取所有日志,如之前)。
另一个想法是不使用Log.x()
,而是写入您自己的日志文件。最近的ACRA版本能够发送此文件的内容以及崩溃报告。