Android是否会保留启动时间的日志?


19

我正在为Android制作家长控制/问责制应用程序。它包含一个监视服务,该服务在后台运行,并在手机启动时启动。

不幸的是,我发现以“安全模式”启动android时,服务不会自动启动,因此我的应用程序存在严重缺陷。

在安全模式下,无需运行我的监视服务即可启动Web和其他应用程序。

我以为,如果在安全模式下无法监视应用程序活动,也许我至少可以让我的应用程序检测手机先前是否处于安全模式。然后,它可能会提醒家长或责任合伙人?

Android会保留此日志吗?还是一般的任何启动日志?我非常乐于接受建议和替代方案。


2
我非常希望没有办法做到这一点。
RR 2012年

4
我认为这不应该关闭。开发人员并不是唯一对此感兴趣的人。
RR

我同意@Richard。这不是专门的编码问题,而是有关Android工作方式的问题。
ale

Answers:


13

我认为您已经陷入困境,总之,您无能为力!

请查看此,解释原因,特别是在本节中:

系统分区和安全模式

系统分区包含Android的内核以及操作系统库,应用程序运行时,应用程序框架和应用程序。该分区设置为只读。当用户将设备引导到安全模式时,只有核心Android应用程序可用。这样可以确保用户可以将手机启动到没有第三方软件的环境中。

关键字不包含第三方软件

编辑:

Android启动时,会logcat在中保留的临时缓冲区中保留的缓存/dev/log。当缓冲区达到阈值时,该缓冲区将被回收,显然,阈值越大,Android越慢,由于不断向垃圾猫缓冲区发送垃圾邮件,因此将其保持在最低水平-iirc,约为64K:

#define DEFAULT_LOG_ROTATE_SIZE_KBYTES 16
#define DEFAULT_MAX_ROTATED_LOGS 4

资源: system/core/logcat/logcat.cpp

不要问,对于每个应用程序,多少行可能不同。不仅如此,logcat在重新启动后也会消失!


2
您没有真正回答您只是重申了他所知道的问题,即他的应用无法在安全模式下进行监控的问题。添加有关安全模式日志或替代方法的信息,然后+1
花生

1
@ Peanut,Android仍然会记录logcat,但只有核心服务,仅此而已!别无选择!而且第三方应用程序无法识别已激活安全模式,因为下次退出安全模式(即正常重启)时,第三方应用程序“认为”没有发生任何事情,就像“没什么可看的...”前进”
t0mm13b 2012年

1
抱歉,我在看到您的评论之前先编辑了我的评论,但是正如我所说的,您并没有真正回答他的问题。因此,另一种选择是检查logcat是否在其应用未运行时运行?显然,这将要求该人员在某个时候不在安全模式下启动它,但这至少是一个现实的解决方案。
花生2012年

logcat的内容... /dev/null重新启动后就像“照常营业”一样被刷新......只是说.. :)谢谢你的投票!
t0mm13b 2012年

啊,我不知道那个^^我会投票,因为您在这里提供了他的问题的答案:)我想您应该将有关日志的内容添加到您的实际答案中。编辑:哦,直到您编辑答案,我才能真正投票:p
花生

6

不是最好的答案,但也许这些信息会有所帮助。

我知道的唯一方法是包含系统重启后产生的日志/proc/last_kmsg

内核在重新引导后是否保留此日志文件,取决于内核编译期间提供的设置。

我的经验表明,某些库存设备(HTC)启用了此日志记录,而另一些则没有。我还没有看到一致的模式。


谢谢!您从哪里了解此日志?您对我如何了解更多这些日志有任何建议吗?那里有参考吗?
jws121295 2012年

万一有人像我一样徘徊,日志现在在/ sys / fs / pstore / console_ramoops中。它不是像dmesg那样的完整日志,但基本上只包含有关最后一次内核崩溃以及导致它的原因的信息。
埃文·朗格瓦伊

adb shell cp /sys/fs/pstore/console-ramoops /data/media/0/console-ramoops.`date "+%Y_%m_%d_%H_%M_%S"`.log在基于Android 8的LineageOS的OP3上与TWRP结合使用
beppe9000
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.