根据Gradle中的构建类型更新值

时间:2015-01-19 10:37:34

标签: gradle android-gradle build.gradle gradlew

我正在使用带有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

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

1 个答案:

答案 0 :(得分:0)

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

  1. 您声明一个名为'myVar'的变量,其默认值为'debug',分配
  2. 您运行发布配置块并将'myVar'的值设置为'release'
  3. 您运行调试配置块并将'myVar'的值设置回'debug'
  4. 执行'checkVar'任务时,将打印最后指定的值。

    仅供参考:您可以通过调用project.myVar = 'whatever'

    来简化2.和3.