android - 如何从 gradle 任务中获取 flavor 名称

标签 android gradle

我有以下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帮助我们做到这一点。因此我定义了一个 StringVARIANT并根据我的口味将值设置为付费或免费。
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/

相关文章:

Android 通知声音被系统通知抑制

Android - 在屏幕顶部显示可关闭的对话框(就像在 Chrome 中一样)

android - 生成已签名的 apk 并激活 proguard 时,木材包不存在错误

gradle - 约定优于配置

android - 没有cloudpush的android的getDeviceToken

java - 我正在使用 web api 进行数据同步服务

android - 允许 TextView 在屏幕之外

android - 更新后 android studio 无法为锁定文件创建父目录

java - Gradle并行执行命令行

jakarta-ee - war 中使用gradle放错了web.xml