未使用AudioManager却出现大量相关日志 如何在Android Studio中屏蔽
这些AudioManager的Debug级别日志并非你的业务代码打印,而是你集成的第三方组件、音视频SDK甚至系统ROM自带的系统类打印的,所以即使你没直接调用AudioManager也会输出,你之前仅过滤包名无效的原因是这些日志本身就归属你的应用进程,需要额外排除对应标签。
解决方法
1. 调整Logcat过滤规则(本地调试首选,无侵入)
直接修改Logcat过滤配置,屏蔽指定标签的日志即可:
- 打开Logcat右上角的
Edit Filter Configuration - 在Log Tag输入框填入正则规则:
^(?!.*AudioManager).*$,该规则会自动过滤所有标签含AudioManager的日志 - 保留你原本的包名
com.abhi过滤规则,保存配置即可生效 - 如需同时屏蔽其他无关系统日志,可以在正则里追加标签,例如同时屏蔽
ActivityThread日志的规则为^(?!.*(AudioManager|ActivityThread)).*$
2. 构建阶段关闭Debug日志(适用于所有版本)
release包默认不会输出Debug级别的系统日志,这类日志会自动消失。如果要在debug版本也全局关闭Debug/Verbose级别日志,可以做如下配置:
在proguard-rules.pro中添加规则:
-assumenosideeffects class android.util.Log { public static *** d(...); public static *** v(...); }
然后在模块级build.gradle中给debug构建开启混淆优化:
android { buildTypes { debug { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
3. 从根源停止调用(需要排查调用方)
如果要彻底停掉这些日志输出,可以找到调用AudioManager的来源后修改对应逻辑:
- 给
AudioManager.getStreamVolume、AudioManager.isMusicMuted两个方法添加方法断点 - 运行应用触发日志输出,断点触发后查看调用栈即可定位到调用AudioManager的SDK/组件,针对性修改组件配置关闭相关逻辑即可
内容的提问来源于stack exchange,提问作者user15260712
相关产品推荐
相关产品推荐

