我创建了自定义buildTypes,如下所示:
buildTypes { releasefree.initWith(buildTypes.release) releasefree { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } releasepro.initWith(buildTypes.release) releasepro { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' applicationIdSuffix ".pro" } debugfree.initWith(buildTypes.debug) debugfree { shrinkResources true applicationIdSuffix ".debug" debuggable true } debugpro.initWith(buildTypes.debug) debugpro { shrinkResources true applicationIdSuffix ".pro.debug" debuggable true } }
我不会使用默认的调试和发布构建类型,并希望从构建变体列表中删除它们.我有几种口味,变种列表太大了.删除具有默认调试和发布类型的变体将有所帮助,因为我永远不会使用它们.
我尝试使用变体过滤器如下,但它不起作用
android.variantFilter { variant -> if(variant.buildType.name.endsWith('Release') || variant.buildType.name.endsWith('Debug')) { variant.setIgnore(true); } }
我正在过滤变体的方式是否有问题,或者是否无法使用默认的调试和发布版本类型删除变体.
弄清楚了.对我而言,这是一个非常愚蠢的错误.上述变体过滤器确实有效.这些名字都是小写的,而我所比较的字符串中的大写字母是罪魁祸首.
更改为以下(使比较字符串小写)使其按预期工作:
android.variantFilter { variant -> if(variant.buildType.name.endsWith('release') || variant.buildType.name.endsWith('debug')) { variant.setIgnore(true); } }
或这个
android.variantFilter { variant -> if(variant.buildType.name.equals('release') || variant.buildType.name.equals('debug')) { variant.setIgnore(true); } }