只混淆一种味道

Obfuscate only one flavour

我将如何只混淆一种口味。

不幸的是,flavor 2 依赖于一个模块(jar),它使用了 类 的一些重复项,由于它的设置方式,我无法混淆它。 (第 3 方)所以希望跳过混淆味道。

我似乎无法在 flavors 部分定义 minifyENabled false,或者将 flavor 添加到构建部分。

注意,一共有6种口味。愿望是挑选应该混淆的口味

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

    productFlavors {
        flavour1{
            applicationId "uk.co.company.flavour1"
        }
        flavour2{
            applicationId "uk.co.company.flavour2"
        }
   }

只要 ProductFlavor DSL 对象中不存在 minifyEnabled,那么您就必须创建另一个 buildType,例如releaseMinified 以及标准 release

buildTypes {
    release {
        minifyEnabled false
    }
    releaseMinified {
        minifyEnabled true
    }
}

productFlavors {
    minifiableFlavor{}
    nonMinifiableFlavor{}
}

并且仅为需要的风格启用此构建类型:

android.variantFilter { variant ->
    if (variant.buildType.name.equals('releaseMinified') && !variant.getFlavors().get(0).name.equals('nonMinifiableFlavor')) {
        variant.setIgnore(true);
    } else if (variant.buildType.name.equals('release') && variant.getFlavors().get(0).name.equals('nonMinifiableFlavor')){
        variant.setIgnore(true);
    }
}

那么你会得到: