我想通过使用例如:
从控制台运行我的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,我可以使用它。但出了什么问题是:
我输入终端
./gradlew testRun -PconfigVariable=true
测试运行和BuildConfig.SENT_VALUE设置为true(println表示它输入了" if语句"在defaultConfig中的第1个块)
我尝试再次开始测试,将configVariable的值更改为false(println表示它输入了&#34的第二个块; if语句"在defaultConfig中)
./gradlew testRun -PconfigVariable=false
即使
,测试运行和BuildConfig.SENT_VALUE仍然是正确的buildConfigField "boolean", "SENT_VALUE", "false"
是在gradle中调用的,但项目中的变量没有更新。
我做错了什么或有其他方法可以达到同样的效果吗? (通过终端将boolean发送到android项目变量 - 所以每次更改终端命令时都会更新)
答案 0 :(得分:0)
我认为Gradle不知道您的更改,也不会重新运行generateDebugBuildConfig
任务。您可以在第二次运行测试时查看Gradle输出来检查它。此任务应为UP-TO-DATE
。有一些简单的方法可以使它发挥作用。
在运行测试之前清理整个项目。
./gradlew clean testRun -PconfigVariable=false
只清理生成任务。但是你必须正确地指定它的构建变体。以下是如何为没有风味的调试版本执行此操作。
./gradlew cleaGenerateDebugBuildConfig testRun -PconfigVariable=false
通过指定--rerun-tasks
标志强制重新运行任务。
./gradlew testRun -PconfigVariable=false --rerun-tasks