每当您向Firebase项目添加新的Android应用程序时,系统会要求/提醒您应用GPS插件:
现在,根据具有mock
和prod
风格的this Google Samples project进行方便测试,您可以(或必须)摆脱mockRelease
变种,因为......我们都知道为什么。因此,实现此变体方法并使用Firebase的构建文件如下所示:
的build.gradle
android {
...
buildTypes {
release {
...
}
debug {
applicationIdSuffix ".debug"
...
}
}
flavorDimensions "environment"
productFlavors {
mock {
applicationIdSuffix = ".mock"
dimension "environment"
}
prod {
dimension "environment"
}
}
android.variantFilter { variant ->
if (variant.buildType.name == 'release' && variant.flavors[0].name == 'mock') {
variant.setIgnore(true) // These
variant.ignore = true // both work
}
}
...
}
dependencies {
...
}
apply plugin: 'com.google.gms.google-services'
此设置的问题在于,您需要为每个生成的软件包名称创建一个Firebase项目,并且这样做无害:
那么为什么我们不根据变体的名称选择性地应用插件呢? Easy-peasy Japanesy,对吧?
dependencies {
...
}
android.variantFilter { variant ->
if (/* whatever selective logic goes here */) {
apply plugin: 'com.google.gms.google-services'
}
}
轰!该变体不再被忽略。经过几个痛苦的时间后,我发现再次忽略变体的唯一方法是从底部删除变体过滤器。如何将Google服务插件选择性地应用于变体并且能够忽略其中一个?
答案 0 :(得分:0)
原来我的答案没有按预期工作。尽管该变体被忽略,但该插件仍然被应用,尽管逻辑似乎反过来说。感谢Jack Feng for this answer,这是有效的解决方案。代码是:
apply plugin: 'com.google.gms.google-services'
android.applicationVariants.all { variant ->
if (variant.name == 'variantNameYouDontWantFirebaseOn') {
project.tasks.getByName('process' + variant.name.capitalize() + 'GoogleServices').enabled = false
}
}