2

我正在使用带有 Gradle 构建的 Android Studio。在我的build.gradle中,我希望变量的值对于不同的构建类型是不同的:

ext {
    //By default, the value of myVar is 'debug'
    myVar = 'debug'
}

android {
   buildTypes {
       release {    
            //update value of myVar to 'release'
            project.ext.set("myVar","release")
        }


        debug {
             //update value of myVar to 'debug'
             project.ext.set("myVar","debug")
        }

    }
}

//I defined a task to check the value of myVar
task checkVar () {
   println "My var is $myVar"
}

check.dependsOn(checkVar)

当我运行命令gradle clean assembleRelease时,我希望看到一个打印出来的文本My var is release。但是,我明白了My var is debug。为什么 的值myVar没有更改为release

我想要实现的是在执行期间获取当前的构建类型。有没有更好的方法来实现这一目标?

4

1 回答 1

0

这不起作用,因为它是项目范围的变量。构建类型块只是配置,所以这里真正发生了什么(虽然有点简化):

  1. 您声明了一个名为“myVar”的变量,并分配了默认值“调试”
  2. 您运行发布配置块并将“myVar”的值设置为“发布”
  3. 您运行调试配置块并将“myVar”的值设置回“调试”

执行“checkVar”任务时,将打印最后分配的值。

仅供参考:您可以通过调用来简化 2. 和 3.project.myVar = 'whatever'

于 2015-01-19T11:46:49.930 回答