当前位置: 首页 > 知识库问答 >
问题:

生成过程中包含自定义活动风味特定分级任务

百里涛
2023-03-14

我有一个readVersions任务:

task readVersions() {
    def Properties versionProps = new Properties()
    def versionPropsFile = file('version.properties')
    if (versionPropsFile.exists())
        versionProps.load(new FileInputStream(versionPropsFile))
    def v_code = (versionProps['VERSION_CODE'] ?: "0").toInteger()
    def v_name = versionProps['VERSION_NAME']

    // Set
    versionCode v_code
    versionName v_name
}

project.afterEvaluate {
    preBuild.dependsOn readVersions
}

我希望有一个新的readVersions任务,它包含了味道,这样我就可以在访问“flavor”目录中的“version.properties”文件时使用它。

我试过:

android.productFlavors.all{ flavor ->
    task ("${flavor.name}_readVersions")<<{
    def versionPropsFile = file(flavor.name+'/version.properties')
...
project.afterEvaluate {
    preBuild.dependsOn ${active_flavor}_readVersions
}

共有1个答案

岳迪
2023-03-14

我将“ReadVersions”任务拆分为“ReadVersionName”和“ReadVersionCode”

def getVersionName(flavor) {
    return getVersion(flavor, "VERSION_NAME", false)
}
def getVersionCode(flavor) {
    return getVersion(flavor, "VERSION_CODE", true)
}
def getVersion(flavor, type, intRequired) {
    // READ
    def Properties versionProps = new Properties()
    def versionPropsFile = file("${flavor}/version.properties")
    if (versionPropsFile.exists())
        versionProps.load(new FileInputStream(versionPropsFile))
    def value = versionProps["${type}"]
    return intRequired ? value.toInteger() : value
}

然后在每个味道的定义中运行它们:

productFlavors {
    one {
        versionName getVersionName("one")
        versionCode getVersionCode("one")
    }
    two {
        versionName getVersionName("two")
        versionCode getVersionCode("two")
    }

需要注意的一点是,我之前的尝试是将versionName和versionCode设置合并到预构建任务的依赖项中。在这个过程中,“版本名称”似乎不能再正确设置了。我的任务不是从正确的味道设置它,这就是为什么我想出了另一个解决方案,但在设置后读取它总是‘空’。

 类似资料:
  • 试图了解如何创建自定义插件。但我无法完成我的新任务。我得到这个错误: 无法应用插件[id为“Code4Reference”] 更新:现在我面临另一个问题,当执行我的新任务,应该签署所有的RPM在路径上找到。我知道这在大楼里很好用。格拉德尔: 在libs.gradle.sign类型的任务“:MyTask”上找不到参数[libs.gradle.sign$_showmessage_closure1@4b

  • 我的Android应用程序有多种风格:制作、暂存、审查等,以及发布和调试构建类型。当我运行<代码>时/gradlew应用程序:依赖项它自然返回具有每种风格/构建类型的依赖项树: 产品发布 这导致依赖关系树有32000多行,这使得评估有点困难。我要找的是一个依赖项命令,我可以在其中指定风格和构建类型,以避免出现可怕的依赖项树报告,例如: 非常感谢任何帮助、提示和/或提示。

  • https://docs.gradle.org/current/userguide/custom_tasks.html 如何使此任务在执行阶段运行?正在传递一个空闭包 唯一的解决办法? 但是hello任务似乎是在构建的配置阶段调用的。

  • 我想把多个分级任务作为一个来运行。所以不是 这行不通

  • 我正在进行带有多个Grails插件的Grails项目(Grails2.3.11)。一个主要的Grails项目,加上一些用户定义的Grails插件和核心Java项目,创建了一个完整的应用程序。到目前为止,这些项目都是使用Ant Builder构建的。最近升级的构建过程使用Gradle。 gradle过程的问题是,有些项目需要用JDK1.7构建,有些项目需要用JDK1.8构建。为了修复它,我将java

  • 问题内容: 说我的课很简单 我希望将此类s 的集合存储在People类的属性中,该属性是类型为Person的数组 也许我做到这一点如下 问题:请问我如何检查people.list是否包含实例alex? 我很想尝试的简单尝试 称一个错误 问题答案: 有两个功能: 编译器在抱怨是因为编译器知道不是,因此需要一个谓词,但不是谓词。 如果阵列中的人员是(不是),则可以使用: 由于它们不相等,因此可以将第二