inb4重复
我知道有很多关于如何使用ProGuard从应用程序中删除日志记录代码的问题/博客,我已经尝试过这些解决方案并且它们按照设计的方式工作。我的问题略有不同。在我的应用程序中,我没有直接从任何地方使用默认的日志记录方法或System.out.println()
。相反,我有一个调用System.out.println()
的自定义方法,每次记录某些内容时,我的应用都会调用此方法(MyApplication.log()
)。我强烈要求我需要这种方法。
我的public static void log()
方法位于名为MyApplication
的类中,该类会覆盖默认的Application
类。我从here获得了此ProGuard规则:
-assumenosideeffects class java.io.PrintStream {
public void println(%);
public void println(**);
}
这成功删除了System.out.println()
的直接使用,包括MyApplication.log()
。但是,当我通过调整它以删除MyApplication.log()
来使用此规则时,它不起作用:
-assumenosideeffects class changed.package.name.MyApplication {
public static void log(...);
}
log()
有两个版本:
log(String)
log(String, int)
他们都没有被删除。该方法被混淆为m17739c()
,我甚至(幼稚地)在规则中添加了此方法名称。它仍然无效。
我不相信-assumenosideeffects
是专为默认日志记录方法设计的。我在这里做错了什么?