从终端

时间:2016-03-30 13:51:38

标签: android gradle

我想通过使用例如:

从控制台运行我的Android测试
./gradlew testRun -PconfigVariable=true

基于configVariable,我想在项目布尔变量中创建可用的true / false值,用于在我的测试中设置config。

android {
    defaultConfig {
        (...)
        if (isSentValueTrue() == true) {
            println("Value is: " + isSentValueTrue())
            buildConfigField "boolean", "SENT_VALUE", "true"
        } else {
            println("Value is: " + isSentValueTrue())
            buildConfigField "boolean", "SENT_VALUE", "false"
        }
    }
    (...)
}

def isSentValueTrue() {
    def sentValue = project.getProperties().get("configVariable")
    return sentValue == null ? false : sentValue;
}

因此,在我调用上面提到的终端命令之后,我得到了在项目中创建的BuildConfig.SENT_VALUE,我可以使用它。但出了什么问题是:

  1. 我输入终端

    ./gradlew testRun -PconfigVariable=true
    
  2. 测试运行和BuildConfig.SENT_VALUE设置为true(println表示它输入了" if语句"在defaultConfig中的第1个块)

  3. 测试完成
  4. 我尝试再次开始测试,将configVariable的值更改为false(println表示它输入了&#34的第二个块; if语句"在defaultConfig中)

    ./gradlew testRun -PconfigVariable=false
    
  5. 即使

    ,测试运行和BuildConfig.SENT_VALUE仍然是正确的
    buildConfigField "boolean", "SENT_VALUE", "false"
    

    是在gradle中调用的,但项目中的变量没有更新。

  6. 我做错了什么或有其他方法可以达到同样的效果吗? (通过终端将boolean发送到android项目变量 - 所以每次更改终端命令时都会更新)

1 个答案:

答案 0 :(得分:0)

我认为Gradle不知道您的更改,也不会重新运行generateDebugBuildConfig任务。您可以在第二次运行测试时查看Gradle输出来检查它。此任务应为UP-TO-DATE。有一些简单的方法可以使它发挥作用。

  1. 在运行测试之前清理整个项目。

    ./gradlew clean testRun -PconfigVariable=false

  2. 只清理生成任务。但是你必须正确地指定它的构建变体。以下是如何为没有风味的调试版本执行此操作。

    ./gradlew cleaGenerateDebugBuildConfig testRun -PconfigVariable=false

  3. 通过指定--rerun-tasks标志强制重新运行任务。

    ./gradlew testRun -PconfigVariable=false --rerun-tasks