如何从继承proguardFiles中删除proguard文件?

时间:2015-11-17 22:24:45

标签: android android-studio android-gradle android-proguard

我在下面有2个buildType:

debug {
    ...
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'proguard-rules-dont-obfuscate.pro'
    ...
}

inhouse.initWith(buildTypes.debug)
inhouse {
    ...
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    println proguardFiles.toString()
    ...
}

我希望我的内部buildType继承自debug(对于其他属性),但不包括proguard文件proguard-rules-dont-obfuscate.pro,如上所示。不幸的是,在打印出proguardFiles之后,它仍然有proguard-rules-dont-obfuscate.pro,即使我没有包含它。

1 个答案:

答案 0 :(得分:2)

我发现proguardFiles内部只有proguardFiles.addAll。为了不从继承的buildTypes中包含proguard文件,我需要清除proguardFiles列表。幸运的是,我找到了setProguardFiles方法,它在设置之前执行proguardFiles.clear()。所以解决方案是在添加新的proguard文件之前添加setProguardFiles(空)。

inhouse.initWith(buildTypes.debug)
inhouse {
    ...
    List empty = new ArrayList<String>()
    setProguardFiles(empty)
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    println proguardFiles.toString()
    ...
}