一.背景:

Android开发经常遇到一个问题,测试提供的日志没有抓到问题发生点的日志,也就是问题发生时的日志被设备最新的日志冲刷掉了

二.解决思路:

在和谷歌的沟通过程中,谷歌在日志系统中明确要求合作伙伴的开发人员提供bugreport.zip。在这个压缩包中,解压后的bugreport-你的设备名称-2019-11-26-11-19-49.zip\FS\data\misc\logd中会持久化的保存logcat日志(最多255个)

那么顺着谷歌的思路,很容易联想到adb shell进入设备命令行,查看data\misc\logd目录下的文件

7497e907553eb29b4ab1a70d32cbd91a.png

接下来在opengrok中搜索“data/misc/logd”很容易就能搜索到logd相关的文件。

介绍logd配置的文件是:system/core/logcat/logpersist和system/core/logd/README.property,两个文件很容易看懂意思,简单来说就是通过build.prop配置属性,然后开启logd服务,保存logcat日志

三.解决方案

在device/设备厂商/xxx.mk下,配置如下内容即可使上述功能生效:

ifeq ($(TARGET_BUILD_VARIANT),userdebug)

PRODUCT_DEFAULT_PROPERTY_OVERRIDES+= \

persist.logd.logpersistd.enable=true \

persist.logd.logpersistd=logcatd \

persist.logd.logpersistd.size=40 \

persist.logd.logpersistd.buffer=main,system,crash

endif

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐