仅使用Proguard禁用日志记录和缩小资源

时间:2015-12-24 09:13:27

标签: android android-gradle proguard android-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(...);
}

只有将getDefaultProguardFile从proguard-rules.pro设置为('proguard-android.txt')

,才能将上面的代码添加到('proguard-android-optimize.txt')

但是将它设置为proguard-android-optimize.txt会启用我不想要的优化标记。

那么我怎样才能在没有Proguard对我的代码进行任何缩小或优化的情况下禁用日志记录和缩小资源?

2 个答案:

答案 0 :(得分:2)

您应该能够通过仅启用assumenosideeffects所依赖的特定Proguard优化来实现此目的。它依赖的两个是:

  • 代码/删除/简单:根据简单的控制流分析删除死代码。
  • 代码/删除/高级:根据控制流分析和数据流分析删除死代码。

您可以阅读有关不同优化选项here的更多信息。所以这样的事情应该有效:

<强> 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
        }
}

答案 1 :(得分:-1)

我认为您仍然可以尝试使用-dontobfuscate和&amp;您的proguard配置文件中的dontshrink。这些选项不会缩小和混淆代码。