一.背景:
Android开发经常遇到一个问题,测试提供的日志没有抓到问题发生点的日志,也就是问题发生时的日志被设备最新的日志冲刷掉了
二.解决思路:
在和谷歌的沟通过程中,谷歌在日志系统中明确要求合作伙伴的开发人员提供bugreport.zip。在这个压缩包中,解压后的bugreport-你的设备名称-2019-11-26-11-19-49.zip\FS\data\misc\logd中会持久化的保存logcat日志(最多255个)
那么顺着谷歌的思路,很容易联想到adb shell进入设备命令行,查看data\misc\logd目录下的文件
接下来在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