Android Studio升级到0.4.0后找不到buildConfig()函数。

28

升级到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 定义了一些字符串常量。
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\";"
    }
}

这里是新的错误

在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}上,无法找到buildConfig()方法的参数[public static final String MY_KEY = "";]。

使用Android Studio 3.7时一切正常。

2个回答

93

我无法使用注释(太长了)。 你可以在gradle 1.9版本中的“新功能”中找到它。

DSL变更:buildConfigLine已被buildConfigField替换:

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

您可以在flavor或build type中覆盖默认配置中定义的字段。请参阅“basic”示例。

现在,Build Config还会自动包含更多常量:PACKAGE_NAMEVERSION_CODEVERSION_NAMEBUILD_TYPEFLAVOR以及FLAVOR_<group>(如果有几个 flavor dimensions)。

因此,如果您有这样一行代码:

buildConfig "public static final boolean MY_FLAG = true;"

现在你应该将它替换为像这样的东西:

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

根据您的情况:

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

更新 2015年12月09日:

使用新的实验性插件(0.2.1),您需要使用以下内容:

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

3
谢谢你的帮助!工作正常。这里有一些额外的信息:https://plus.google.com/+AndroidDevelopers/posts/2XCHLizKpWs - passsy
那么我如何访问 BuildConfig.BUILD_TYPE?我不明白。 - IgorGanapolsky

3

这个版本引入了一个变更:

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

如果你有这样一行代码:
buildConfig "public static final boolean FLAG = true;"

现在你需要使用:
buildConfigField "boolean", "FLAG", "true"

对于字符串类型的值,您可以使用以下方法:

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

注意: 之前的DSL属性:
buildConfigLine "<value>"

已更改为

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接