0

我使用Timber日志仅在调试环境中登录我的 Android 应用程序,为此,我在我的应用程序类中添加了这一行:-

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

随后,我在整个应用程序中完美地使用了它。此外,我通过将这些行添加到我的proguard-rules.pro文件中,混淆了发布版本变体的 Timber 日志:-

-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 日志语句中的一个 NullPointerException 崩溃,首先,Timber 日志不应该存在于生产应用程序中,因为我已经把它剥离了,而且我只在调试环境中种植了Timber log,所以我不明白为什么它没有被剥离。

4

1 回答 1

1

我认为在 Timber 上使用了 Log。您可以尝试在 proguard-rules.pro 上使用 Log 添加 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(...);
}
于 2019-08-16T08:52:43.623 回答