Ell*_*ica 2 parameters command-line android arguments gradle
我知道如何创建 buildConfigField 变量并在我的build.gradle文件中设置其值。例如buildConfigField 'String', 'BUILD_VALUE', 'HELLO WORLD'。
我还知道如何通过任务从 gradle 命令行传递参数。例如,如果我./gradleW propertyTypes -Dargs=test1 -Pargs=test2在终端中执行操作并在我的中包含以下内容build.gradle:
task propertyTypes(){
    doLast{
        if (project.hasProperty("args")) {
            println "Project property ["+project.getProperty("args")+"]"
        }
        println "System property ["+System.getProperty("args")+"]"
    }
}
它将输出test2并test1到终端。
但是,我不知道如何将它们放在一起。我希望能够通过 gradle 命令行传递一个参数(例如“Hello World”),然后将其设置为 buildConfigField 以在程序本身中使用。当我尝试时,要么任务不知道 buildConfigField 是什么,要么 buildConfigField 不知道传递到任务中的属性。
关于如何使这项工作有效的任何见解?
这个答案对我有用:
转述一下:
步骤 1:创建一个变量来保存 gradle.properties 文件中的默认值
MY_VAR=defaultValue
步骤 2:buildConfigField在块内应用程序的 build.gradle 文件中创建一个名为 [VAR_NAME] 的变量android->defaultconfig。gradle.properties对于其值,请为其提供使用以下语法放入的变量:
android {
    defaultConfig {
        buildConfigField "String", "VAR_NAME", "\"$MY_VAR\""
    }
步骤 3:重建项目。(在此之前,您将无法在代码中访问新的 BuildConfig 变量。)
步骤 4:BuildConfig.VAR_NAME根据需要在应用程序代码中使用该变量。
步骤 5:通过命令行为变量传递新值,方法是将以下标志添加到gradlew命令行中:
-P MY_VAR=new_value
其中new_value是您决定的内容,MY_VAR是您在 gradle.properties 文件中输入的名称。
作为额外的好处,您可以检查您是否确实能够通过命令行传递一个值,并通过将以下内容添加到您的应用程序build.gradle(就在块之前android)来正确更新它:
task output { println "\"$MY_VAR\"" }
(Note that "output" is just a name for the task --- you can call it anything)
Then if you run ./gradleW output in terminal, it will print the default value for MY_VAR as you've set it in gradle.properties.
If instead you run ./gradleW output -P MY_VAR=new_val then it will print the updated value!
| 归档时间: | 
 | 
| 查看次数: | 2631 次 | 
| 最近记录: |