Proguard不会删除木材日志

时间:2019-01-22 05:01:40

标签: android proguard timber

我仅在调试环境中使用xs:numeric()日志登录Android应用程序,为此,我在Application类中添加了以下行:-

fn:number(3298534883328) div 1024 div 1024 div 1024,
xs:numeric(3298534883328) div 1024 div 1024 div 1024,
xs:double(3298534883328) div 1024 div 1024 div 1024,
xs:float(3298534883328) div 1024 div 1024 div 1024,

3298534883328 div fn:number(1024) div 1024 div 1024,
3298534883328 div xs:numeric(1024) div 1024 div 1024,
3298534883328 div xs:double(1024) div 1024 div 1024,
3298534883328 div xs:float(1024) div 1024 div 1024

随后,我在整个应用程序中完美使用了它。另外,通过将以下行添加到我的if (BuildConfig.DEBUG) { Timber.plant(new Timber.DebugTree()); } 文件中,我混淆了Timber日志的发行版本:-

proguard-rules.pro

在应用程序的-assumenosideeffects class timber.log.Timber* { public static *** v(...); public static *** d(...); public static *** i(...); public static *** e(...); public static *** w(...); } 中,我添加了以下内容:

build.gradle

尽管所有这些在我的生产应用程序中,我都通过Crashlytics崩溃,导致Timber日志语句之一中的NullPointerException异常,首先,Timber日志不应该出现在生产应用程序中,而且,由于我将其剥离,所以我只在调试环境中植入了Timber日志,所以我不明白为什么它没有被剥离。

1 个答案:

答案 0 :(得分:0)

我认为Timber上已使用Log。您可以尝试通过登录proguard-rules.pro

添加Timber。
# Remove log
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int d(...);
public static int w(...);
public static int v(...);
public static int i(...);
public static int e(...);
}

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