Android Proguard不剥离原木

Android Proguard不剥离原木,android,proguard,timber-android,Android,Proguard,Timber Android,我只在调试环境中使用日志登录Android应用程序,为此,我在应用程序类中添加了以下行:- if(BuildConfig.DEBUG){ 木材.植物(新木材.树木()); } 一、 随后,我在整个应用程序中完美地使用了它。此外,我还通过将以下行添加到我的proguard rules.pro文件中,混淆了发布版本变体的木材日志:- -assumenosideeffects class timber.log.Timber* { public static *** v(...); p

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

if(BuildConfig.DEBUG){
木材.植物(新木材.树木());
}
一、 随后,我在整个应用程序中完美地使用了它。此外,我还通过将以下行添加到我的
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
中,我添加了以下内容:

release {
      minifyEnabled true
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}

尽管如此,在我的生产应用程序中,我通过Crashlytics得到了一个崩溃,导致其中一个Timber log语句中出现NullPointerException,首先,Timber log不应该出现在生产应用程序中,因为我已经将其剥离,而且,我只在调试环境中植入了Timber log,所以我不明白为什么它没有被剥去。

我认为木材上有原木的用处。您可以在proguard-rules.pro上尝试添加木材

# 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(...);
}

据我所知,如果你想让proguard删除代码。您必须使用的优化版本it@seyedJafari当我特别提到
if(BuildConfig.DEBUG)
时,您能解释一下为什么在发行版构建变体中植入了Timber吗?正如我所说,我不确定,但代码删除功能仅在proguard Optimized中可用