如何使用不同风格或不同构建类型的不同proguard文件?

Mod*_*ody 5 obfuscation android proguard gradle android-productflavors

我需要为测试库制作不同的风格.为什么?好吧,我希望项目完全安全,所以我想缩小一直启用(即使是调试版本类型).

在进行测试时,我正在使用项目中的不同类,所以我决定使用flavor更改proguard文件.它看起来像这样:

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            testProguardFile 'test-proguard-rules.pro'
        }
        debug {
            minifyEnabled true
            testProguardFile 'test-proguard-rules.pro'
        }
    }
    ...
    productFlavors{
        forTest{
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules1.pro', 'debug-rules.pro'
        }
        forRelease{
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'debug-rules.pro'
        }
   }
}
Run Code Online (Sandbox Code Playgroud)

和proguard-rules*文件

ProGuard的规则:

-dontwarn blablabla.**
-dontwarn blabla.**
-keep class bla.** { *; }
Run Code Online (Sandbox Code Playgroud)

ProGuard的-rules1:

-dontshrink
-dontobfuscate
-dontwarn
Run Code Online (Sandbox Code Playgroud)

但这对我没有帮助.我想在没有混淆的情况下运行测试.Flavors没有minifyEnabled这样的参数,所以我试图找到任何解决方案.那么有关解决问题的任何建议吗?可能有人有同样的问题,并找到另一种解决方案(不使用口味)?

Mar*_*ark 10

经过一整天的捣乱,我发现了以下作品:

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

productFlavors {
    flavorA {
        applicationIdSuffix ".a"
        proguardFile 'flavorA_rules.pro'
    }
    flavorB {
        applicationIdSuffix ".b"
    }

}
Run Code Online (Sandbox Code Playgroud)

  • 那么“flavorA_rules.pro”替换“flavorA”上的“proguard-rules.pro”? (2认同)