android - Proguard 不剥离木材原木

标签 android proguard timber-android

我正在使用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'
}

尽管如此,在我的生产应用程序中,我还是因 Timber 日志语句之一内的 NullPointerException 而导致 Crashlytics 崩溃,首先,Timber 日志不应该出现在生产应用程序中,因为我已经把它剥离了,而且,我只在调试环境中植入了Timber日志,所以我不明白为什么它没有被剥离。

最佳答案

我认为在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(...);
}

关于android - Proguard 不剥离木材原木,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54301532/

相关文章:

java - Apache POI 的 ProGuard 设置

android - proguard.cfg 文件丢失

android - 以编程方式更改语言(Android N 7.0 - API 24)

android - 防止软键盘将内容推到屏幕外

android - Android 管理 API 是否支持自定义 DPC 应用程序?

android - 使用 Timber 时标签为空

android - 在带有自动标记的单独模块中使用木材

java - 如何摆脱 Toast 警告中的 "Argument ' context' might be null"

java - 如何在Eclipse中为非Android Java项目使用Proguard?

android - 从我的 apk 中删除所有 Timber 日志