Proguard не срубает бревна - PullRequest
0 голосов
/ 22 января 2019

Я использую Timber журналы для входа в мое приложение Android только в среде отладки, для этой цели я добавил эту строку в свой класс приложения: -

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 я добавил это:

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

Несмотря на все это в моем производственном приложении, в Crashlytics произошел сбой, вызвавший исключение NullPointerException внутри одного из операторов журнала Timber. Прежде всего, журнал Timber не должен был присутствовать в рабочем приложении, более того, я опустил журнал Timber только в среде отладки, поэтому не понимаю, почему он не урезан.

1 Ответ

0 голосов
/ 16 августа 2019

Я думаю, что в Timber уже есть журнал. Вы можете попробовать добавить Timber with 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(...);
}
...