如何使用ProGuard删除方法

时间:2016-10-18 06:33:32

标签: java android proguard android-proguard

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()有两个版本:

  1. log(String)
  2. log(String, int)
  3. 他们都没有被删除。该方法被混淆为m17739c(),我甚至(幼稚地)在规则中添加了此方法名称。它仍然无效。

    我不相信-assumenosideeffects是专为默认日志记录方法设计的。我在这里做错了什么?

0 个答案:

没有答案