从我的 apk 中删除所有木材日志

Stripping out all Timber logs from my apk

我在我的 proguard 规则中使用以下代码来删除我在编译发布 apk 之前可能留下的任何 log.d。

> -assumenosideeffects class android.util.Log {
>     public static *** d(...);
>     public static *** v(...); }

有没有办法对所有的原木都这样做?

Timber.w("This shouldn't show in release apk when decompiled");

相同的方法 - 但使用 Timber class 而不是 Log - 是否行不通?例如:

-assumenosideeffects class timber.log.Timber* {
    public static *** v(...);
    public static *** d(...);
    public static *** i(...);
}

或者,您可以按照 sample project 执行以下操作:

public class App extends Application {
  @Override
  public void onCreate() {
    super.onCreate();

    if (BuildConfig.DEBUG) {
      Timber.plant(new DebugTree());
    } else {
      Timber.plant(new ProductionTree());
    }
  }

  private static class ProductionTree extends Timber.Tree {
    @Override
    protected void log(int priority, String tag, String message, Throwable t) {
      // Do whatever (or nothing) here.
    }
  }
}