我下面有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。
最佳答案
我发现proguardFiles仅在内部执行proguardFiles.addAll。为了不包括继承的buildTypes中的proguard文件,我需要清除proguardFiles列表。幸运的是,我找到了setProguardFiles方法,该方法在设置之前会进行proguardFiles.clear()设置。因此,解决方案是在添加新的proguard文件之前添加setProguardFiles(empty)。
inhouse.initWith(buildTypes.debug)
inhouse {
...
List empty = new ArrayList<String>()
setProguardFiles(empty)
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
println proguardFiles.toString()
...
}