Proguard не разбирает бревна 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 log я подложил только в отладочной среде, так что не понимаю, почему он не урезан.

насколько я помню, если вы хотите, чтобы proguard удалил код. вы должны использовать его оптимизированную версию

seyed Jafari 22.01.2019 06:11

@seyedJafari Можете ли вы объяснить, почему Timber добавлен в вариант сборки релиза, когда я специально упомянул if (BuildConfig.DEBUG)?

Shahbaz Hussain 22.01.2019 06:14

как я уже сказал, я не уверен, но функция удаления кода доступна только в оптимизированном proguard

seyed Jafari 22.01.2019 14:15
0
3
996
1

Ответы 1

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

Другие вопросы по теме