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