我知道使用Proguard删除记录器调用适用于Android应用程序。
如何在标准Java应用程序中实现这一目标?
import java.util.logging.Logger;
public class Clazz {
private static final Logger LOGGER = Logger.getLogger(Clazz.class.getName());
public void foo() {
LOGGER.info("bar");
}
}
在我的Proguard配置中,我有以下内容:
-assumenosideeffects class java.util.logging.Logger { *; }
-whyareyoukeeping class java.util.logging.Logger
在运行时给出以下输出:
[proguard] java.util.logging.Logger
[proguard] is a library class.
据我所知,这是一个图书馆,但我想要删除所有调用它。 Proguard可以实现吗?如果没有,为什么?为什么这对Android来说如此方便?记录器领域或缺少它与此有什么关系?
答案 0 :(得分:1)
您应该能够删除这样的日志记录调用,假设您没有禁用优化 - 这是删除不必要和不需要的调用的优化步骤。 ProGuard无法删除Logger类本身,因为它是一个运行时库类,如您所见。
您不能使用通配符来匹配方法,因为这包括基本方法,如wait()和finalize()(影响所有类)。您必须枚举要删除的方法。例如:
-assumenosideeffects class java.util.logging.Logger {
void info(java.lang.String);
}