例如,我有 area1 和 area2 风格,但只有 area2 有 google gms 依赖,我只想将 gms 插件应用到 area2,所以我需要决定
current flavors as area == 'area2'
,显然这不可能成功,那我该怎么办呢?
flavorDimensions "area"
productFlavors {
area1 {
dimension "area"
applicationId 'com.sample.area1'
}
area2 {
dimension "area"
applicationId 'com.sample.area2'
}
}
dependencies {
area2Implementation 'com.google.android.gms:play-services-auth: 16.0.1'
}
if(area == 'area2') {
apply plugin: 'com.google.gms.google-services'
}
最佳答案
只需在您的 Android block 中添加以下 android.applicationVariants.all
配置:
android {
// Flavor definitions here
productFlavors {
// ...
}
android.applicationVariants.all { variant ->
if (variant.flavorName == "area2") {
apply plugin: 'com.google.gms.google-services'
}
}
}
==== 2019 年 7 月 1 日更新 ====
只需意识到上面的 android.applicationVariants.all
block 每次都针对所有 构建变体执行(即,如果您有 2 种构建类型和 3 种风格,它将是被所有 6 种变体击中)。而它实际上是为各个变体准备不同的配置,以便稍后构建。
所以为了达到目的我们需要在构建阶段应用插件。不确定是否有更好的方法,但我设法做了一些棘手的事情,比如:
if (getGradle().getStartParameter().getTaskRequests().toString().contains("Area2")) {
apply plugin: 'com.google.gms.google-services'
}
我把它放在 Gradle 文件的末尾,在 Android block 之外(“应用插件” block 最初所在的位置)。另请注意,如果您使用 println在 gradle 控制台中查看。
关于android - 如何在 app/build.gradle 文件中获取当前选择的产品口味,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54032562/