1

我在应用程序中添加了大量的日志记录以简化调试,但我想确保只有最少的日志进入生产应用程序。我的理解是编译器不会删除未使用的代码,Android 没有条件编译,但 Proguard 会删除未使用的代码。这是一个示例跟踪类:

public class Trace
{
  public static final int logginglevel = 5;

  public static final boolean errors = logginglevel > 1;
  public static final boolean warnings = logginglevel > 2;
  public static final boolean info = logginglevel > 3;
  public static final boolean debug = logginglevel > 4;
}

然后在应用程序本身中记录如下:

if (Trace.debug) Log.d(TAG,"problem")

这会成功让 Proguard 识别未使用的语句并删除它们吗?这句话很丑陋,但它是我能看到的最短的。

是否有更简洁的方法来包括登录 Android 应用程序,但是否会自动将其剥离以用于生产构建?我怀疑可以配置 Proguard 本身以删除代码的特定方面,但不确定这是否是比这更好的解决方案。

4

2 回答 2

3

从另一个 StackOverflow 响应...

将此添加到您的 proguard 配置文件中:

-assumenosideeffects class android.util.Log {
    public static *** i(...);
    public static *** d(...);
    public static *** v(...);
}
于 2011-06-02T16:10:20.017 回答
2

这里

在发布之前删除所有调试日志记录调用:是否有工具可以做到这一点?

于 2011-02-11T14:03:50.167 回答