Android Studio Update 0.4.0找不到buildConfig()

时间:2013-12-19 09:44:16

标签: android android-studio gradle android-gradle build.gradle

将Android Studio升级到版本0.4.0后,我遇到了一个新错误:

我通过gradle-wrapper.properties升级到gradle 1.9

distributionUrl=http\://services.gradle.org/distributions/gradle-1.9-all.zip

并在build.gradle中升级了gradle版本

dependencies {
    classpath 'com.android.tools.build:gradle:0.7.+'
}

现在我的项目正在重建。

我为不同的productFlavors定义了一些String常量:

productFlavors {
    local {
        buildConfig "public static final String MY_KEY = \"\";"
    }

    alpha {
        buildConfig "public static final String MY_KEY = \"XXXXX-XXXXX-XXX\";"
    }

    beta {
        buildConfig "public static final String MY_KEY = \"YYYYY-YYYYY-YYY\";"
    }
}

这是新错误

  

找不到参数的方法buildConfig() [public static final String MY_KEY =“”;] on GroupableProductFlavorDsl_Decorated {name = local,minSdkVersion = -1,targetSdkVersion = -1,renderscriptTargetApi = - 1,renderscriptSupportMode = null,renderscriptNdkMode = null,versionCode = -1,versionName = null,packageName = null,testPackageName = null,testInstrumentationRunner = null,testHandleProfiling = null,testFunctionalTest = null,signingConfig = null,resConfig = null}。

一切都在使用Android Studio 3.7

2 个答案:

答案 0 :(得分:93)

我无法使用评论(太长时间)。 你可以在gradle 1.9中的新功能中找到它。

  

DSL变更:buildConfigLine替换为buildConfigField

buildConfigField "boolean", "MY_FLAG", "true"
     

您可以在flavor或build类型中覆盖默认配置中定义的字段。参见'基本'样本。

     

Build Config现在还自动包含PACKAGE_NAMEVERSION_CODEVERSION_NAMEBUILD_TYPEFLAVOR以及FLAVOR_<group>的更多常量有几种风味维度。

所以如果你有这样的一行:

buildConfig "public static final boolean MY_FLAG = true;"

您现在应该将其替换为以下内容:

buildConfigField "boolean", "MY_FLAG", "true"

在你的情况下:

buildConfigField "String" , "MY_KEY" ,  "\"XXXXX-XXXXX-XXX\""

更新12/09/2015:

使用新的实验插件(0.2.1),您必须使用:

buildConfigFields.with {
                create() {
                    type = "String"
                    name = "MY_KEY"
                    value = "MY_VALUE"
                }
            }

答案 1 :(得分:3)

此版本引入了更改:

buildConfigField "<type>", "<name>", "<value>"

如果您有这样的一行:

buildConfig "public static final boolean FLAG = true;"

现在你必须使用:

buildConfigField "boolean", "FLAG", "true"

对于String值,您可以使用:

buildConfigField "String", "FOO", "\"foo\""

请注意: 以前的DSL专有:

buildConfigLine "<value>"

已更改为

buildConfigField "<type>", "<name>", "<value>"