Используйте Proguard только для отключения ведения журнала и сокращения ресурсов.

build.gradle:

buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.SginConfig
        }
}

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

proguard-rules.pro:

-assumenosideeffects class android.util.Log {
    public static boolean isLoggable(java.lang.String, int);
    public static int w(...);
    public static int d(...);
    public static int e(...);
}

Добавление кода выше в proguard-rules.pro работает, только если я установил getDefaultProguardFile с ('proguard-android.txt') на ('proguard-android-optimize.txt')

Но установка его на proguard-android-optimize.txt активирует флаги оптимизации, которые мне не нужны в моем случае.

Итак, как я могу просто отключить ведение журнала и сжать ресурсы без того, чтобы Proguard выполнял минимизацию или оптимизацию моего кода?


person Gayan Weerakutti    schedule 24.12.2015    source источник
comment
Вы не можете. minifying находится отдельно от optimizations. assumenosideeffects не относится к этому.   -  person Jared Burrows    schedule 11.04.2016


Ответы (2)


Вы сможете сделать это, включив только определенные оптимизации Proguard, от которых зависит assumenosideeffects. Два, от которых это зависит:

  • code/removal/simple: удаляет мертвый код на основе простого анализа потока управления.
  • code/removal/advanced: удаляет мертвый код на основе анализа потока управления и анализа потока данных.

Подробнее о различных вариантах оптимизации можно прочитать здесь. Итак, что-то вроде этого должно работать:

proguard-rules.pro

-optimizations code/removal/simple,code/removal/advanced
-dontobfuscate
-assumenosideeffects class android.util.Log {
    public static boolean isLoggable(java.lang.String, int);
    public static int w(...);
    public static int d(...);
    public static int e(...);
}

build.gradle

buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.SginConfig
        }
}
person Bradford2000    schedule 26.04.2016

Я думаю, вы все еще можете попробовать использовать такие параметры, как -dontobfuscate и dontshrink в вашем файле конфигурации proguard. Эти параметры не будут сжимать и запутывать код.

person Sankalp Pandya    schedule 25.04.2016