2013-12-19 40 views
28

升級的Android Studio來0.4.0版本後,我得到了一個新的錯誤:Android Studio中更新0.4.0找不到buildConfig()

我升級通過gradle-wrapper.properties到搖籃1.9

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

和升級中的build.gradle

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

現在我的項目再次建立gradle這個版本。

我有不同的定義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\";" 
    } 
} 

這裏是新的錯誤

Could not find method buildConfig() for arguments [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

回答

93

我不能使用評論(太長)。 你可以在Gradle 1.9的新功能中找到它。

DSL Changes: buildConfigLine is replaced by buildConfigField :

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

You can override fields defined in default config in flavors or build types. See 'basic' sample.

Build Config also now automatically contain more constants for PACKAGE_NAME , VERSION_CODE , VERSION_NAME , BUILD_TYPE , FLAVOR as well as FLAVOR_<group> if there are several flavor dimensions.

所以,如果你有這樣一行:

buildConfig "public static final boolean MY_FLAG = true;" 

您現在應該取代它的是這樣的:

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

你的情況:

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

UPDATE 2015年12月9日:

隨着新實驗插件(0.2.1),你必須使用:

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

感謝您幫幫我!工作正常。這裏有一些額外的信息https://plus.google.com/+AndroidDevelopers/posts/2XCHLizKpWs – passsy

+0

那麼我如何訪問** BuildConfig.BUILD_TYPE **?我不明白。 –

3

該版本引入了一個變化:

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

如果您有這樣的一條線:

buildConfig "public static final boolean FLAG = true;" 

現在你必須SE:

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

字符串值,你可以使用:

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

注: 以前的DSL proprety:

buildConfigLine "<value>" 

已更改爲

buildConfigField "<type>", "<name>", "<value>" 
相關問題