Android Gradle如何根据当前的buildType设置变量

时间:2018-05-30 10:46:30

标签: android gradle

如何根据当前的buildType设置变量,我试过这个

String url = "https://dev.myurl.com"
tasks.whenTaskAdded { task ->
    if (task.name == 'generateReleaseBuildConfig' || task.name == 'generateDebugBuildConfig') {
        if (task.name == 'generateReleaseBuildConfig') {
            url = "https://prod.myurl.com"
        }
    }
}

但是无论当前的buildType是Release还是Debug,任务generateReleaseBuildConfiggenerateDebugBuildConfig都被执行,所以我永远不会得到取决于当前buildType的值。我指定此变量稍后在构建脚本中使用,而不是在Java代码中使用。

我尝试了几个solutions found in SO,但没有一个适合我

2 个答案:

答案 0 :(得分:1)

这个例子来自我自己的应用程序。它工作正常

在您的app\build.gradle

上添加以下代码
buildTypes {
        debug {
            ...
            buildConfigField "String", "SERVER_URL", '"http://..."'
        }
        release {
            ...
            buildConfigField "String", "SERVER_URL", '"http://..."'
        }
}

重要提示:同步您的gradle

然后在你的课堂上跟随电话

String URL = BuildConfig.SERVER_URL

答案 1 :(得分:0)

您可以使用buildConfigField。它看起来像这样:

 buildConfigField('String', 'API_URL', "\"URL\"")

将其置于gradle中,位于不同的buildType下。并且要使用它:

 BuildConfig.API_URL

这将返回此值取决于buildType

更新

确定你放错了吗?

 buildTypes {
         debug {
             //...
             buildConfigField('String', 'API_TEST', "\"URL\"")
         }

         release {
             //...
             buildConfigField('String', 'API_TEST', "\"URL\"")
         }
     }