【问题标题】:Cannot add buildConfigField in productFlavors无法在 productFlavors 中添加 buildConfigField
【发布时间】:2014-06-09 15:32:49
【问题描述】:

在我的 android{} 部分中,我尝试为免费和付费应用提供两种不同的构建类型。

很遗憾,我遇到了 gradle 错误:

Gradle 'android-Transport' 项目刷新失败:构建脚本错误, 找到不受支持的 Gradle DSL 方法:'buildConfigField()'!可能的 原因可能是: - 您正在使用方法所在的 Gradle 版本 缺席 - 您没有应用提供该方法的 Gradle 插件 - 或 构建脚本中有错误

这是我在 gradle build 中的 android{} 部分:

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.3"

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 19
        versionCode 1
        versionName "1.0"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_6
        targetCompatibility JavaVersion.VERSION_1_6
    }

    buildTypes {
        release {
            runProguard true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }

        debug {
            debuggable true
            runProguard false
        }
    }

    productFlavors {
        free {
            packageName "pl.grzeslowski.transport.free"
            buildConfigField "transport.product_flavors.MonetizationType" "MONETIAZATION_TYPE" "transport.product_flavors.MonetizationType.FREE"
        }

        paid {
            packageName "pl.grzeslowski.transport.paid"
            buildConfigField "transport.product_flavors.MonetizationType" "MONETIAZATION_TYPE" "transport.product_flavors.MonetizationType.PAID"
        }
    }
}

这是我的控制台日志:

执行任务:[:transport:compileDebugJava]

按需配置是一项孵化功能。下载 http://repo1.maven.org/maven2/com/android/tools/build/gradle/0.8.3/gradle-0.8.3.pom 下载 http://repo1.maven.org/maven2/com/android/tools/lint/lint/22.5.3/lint-22.5.3.pom 下载 http://repo1.maven.org/maven2/com/android/tools/build/builder/0.8.3/builder-0.8.3.pom 下载 http://repo1.maven.org/maven2/com/android/tools/lint/lint-checks/22.5.3/lint-checks-22.5.3.pom 下载 http://repo1.maven.org/maven2/com/android/tools/sdklib/22.5.3/sdklib-22.5.3.pom 下载 http://repo1.maven.org/maven2/com/android/tools/ddms/ddmlib/22.5.3/ddmlib-22.5.3.pom 下载 http://repo1.maven.org/maven2/com/android/tools/build/builder-model/0.8.3/builder-model-0.8.3.pom 下载 http://repo1.maven.org/maven2/com/android/tools/build/manifest-merger/22.5.3/manifest-merger-22.5.3.pom 下载 http://repo1.maven.org/maven2/com/android/tools/sdk-common/22.5.3/sdk-common-22.5.3.pom 下载 http://repo1.maven.org/maven2/com/android/tools/build/builder-test-api/0.8.3/builder-test-api-0.8.3.pom 下载 http://repo1.maven.org/maven2/com/android/tools/common/22.5.3/common-22.5.3.pom 下载 http://repo1.maven.org/maven2/com/android/tools/lint/lint-api/22.5.3/lint-api-22.5.3.pom 下载 http://repo1.maven.org/maven2/com/android/tools/dvlib/22.5.3/dvlib-22.5.3.pom 下载 http://repo1.maven.org/maven2/com/android/tools/layoutlib/layoutlib-api/22.5.3/layoutlib-api-22.5.3.pom 下载 http://repo1.maven.org/maven2/com/android/tools/build/gradle/0.8.3/gradle-0.8.3.jar 下载 http://repo1.maven.org/maven2/com/android/tools/lint/lint/22.5.3/lint-22.5.3.jar 下载 http://repo1.maven.org/maven2/com/android/tools/build/builder/0.8.3/builder-0.8.3.jar 下载 http://repo1.maven.org/maven2/com/android/tools/lint/lint-checks/22.5.3/lint-checks-22.5.3.jar

FAILURE:构建失败并出现异常。

  • 其中:构建文件“D:\Programowanie\GitProjects\transport\android-Transport\transport\build.gradle” 行:77

  • 出了什么问题:评估项目 ':transport' 时出现问题。

    找不到参数 [transport.product_flavors.MonetizationType] 的方法 buildConfigField() GroupableProductFlavorDsl_Decorated{name=free, minSdkVersion=-1, targetSdkVersion=-1,renderscriptTargetApi=-1, renderscriptSupportMode=null,renderscriptNdkMode=null, 版本代码=-1,版本名称=null, packageName=transport.free, testPackageName=null, testInstrumentationRunner=null, testHandleProfiling=null, testFunctionalTest=null,signingConfig=null,resConfig=null}。

  • 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。

构建失败

总时间:9.781 秒

【问题讨论】:

  • 您是否检查过buildConfigField 行的语法是否确实正确?我认为您可能在字符串之间缺少一些逗号。
  • buildConfigField 应该有 3 个字符串。我不知道是否需要这些包。
  • 正如我所说,字符串需要用逗号分隔(,)。
  • 添加逗号有效:)。谢谢。如果您将其放入答案中,我会接受。

标签: android gradle


【解决方案1】:

buildConfigField 行的正确语法是:

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

也就是说,字符串需要用逗号分隔。

【讨论】:

  • 如何才能得到相同的东西以防不同的味道。如果我为不同的风格定义变量,我会得到相同的错误日志。有什么建议吗?
【解决方案2】:

就我而言:

buildConfigField(“transport.product_flavors.MonetizationType”、“MONETIAZATION_TYPE”、“transport.product_flavors.MonetizationType.FREE”)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-01
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-16
    • 2013-10-06
    相关资源
    最近更新 更多