我有以下gradle设置:
apply plugin: 'com.android.application'
def projectName
android {
...
flavorDimensions "project"
productFlavors {
demo {
dimension "project"
}
full {
dimension "project"
}
}
...
applicationVariants.all { variant ->
variant.outputs.all {
projectName = variant.flavorName
}
}
}
...
task myTask(type: Copy) {
println "flavor name is $projectName"
...
}
preBuild.dependsOn myTask
然而,
println
不在我的命令行/终端中显示 flavor 名称。我错过了什么吗?我用这个作为引用:How to get current flavor in gradle .请注意,我必须在 prebuild
之前运行我的任务.
最佳答案
The current flavor from gradle
在为我们的一款游戏进行更新时,我需要弄清楚如何获取当前风格并在代码中使用它。由于有很多方法可以做到这一点,我选择创建一个自定义构建配置参数并在我拥有的每个变体中设置值。
Adding a new build config field
首先是在您的风格中添加一个新的构建配置属性。使用
buildConfigField
帮助我们做到这一点。因此我定义了一个 String
叫 VARIANT
并根据我的口味将值设置为付费或免费。productFlavors {
paid {
...
buildConfigField "String", "VARIANT", "\"paid\""
}
free {
...
buildConfigField "String", "VARIANT", "\"free\""
}
}
以防万一你不知道在哪里
productFlavors
应该放在,它在你的 build.gradle.
的 android 定义里面通过这样做,您可以使用
BuildConfig
在代码中访问该值。由 Gradle
生成的类.您可以使用相同的类来检查当前构建是否处于调试/ Release模式或其他内容。Get the current flavor name
现在,要访问新创建的属性并使用它,我会执行以下操作:
if (BuildConfig.FLAVOR.equals("paid")){
// do what you need to do for the paid version
} else {
// do what you need to do for the free version
}
关于android - 如何从 gradle 任务中获取 flavor 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58432896/