3

我试图创建一个在产品风味中调用的自定义方法。

当前构建脚本:

   buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}
apply plugin: 'android'

def defineHost(String val) {
    buildConfig "public static final String host = \"" + val + "\";";
}

android {

    compileSdkVersion 17
    buildToolsVersion "18.1.0"

    defaultConfig {
        minSdkVersion 7
        targetSdkVersion 18
    }

    productFlavors {

        flavor1 {
            packageName "flavor1"
            defineHost("test")
        }
        flavor2 {
            packageName "flavor2"
            defineHost("test2")
        }

    }

}
dependencies {
    compile 'com.android.support:appcompat-v7:+'
}

我收到以下错误:

Gradle:评估项目“:测试”时出现问题。

在 GroupableProductFlavorDsl_Decorated{name=flav1, minSdkVersion=-1, targetSdkVersion=-1, renderscriptTargetApi=-1, versionCode=-1, versionName=null, packageName=flavor1, testPackageName=null 上找不到参数 [test] 的方法 defineHost() ,testInstrumentationRunner=null,signingConfig=null}。

我试图为每个产品变体向 BuildConfig 添加几个变量。我可以在每个变体的 defineHost 中写下整个内容,但我希望它干净。打开以获取有关如何在 BuildConfig 中实现变体配置常量的其他建议。

4

2 回答 2

1

最终只使用了新的 'buildConfigField "boolean", "PRE_VERSION", "false";'

于 2014-02-21T07:24:43.123 回答
0

我相信这会奏效:

def defineHost(String val) {
    return "public static final String host = \"" + val + "\";"
}


buildConfig defineHost("test")

尽管我在我的一个应用程序中做了类似的事情,但我还没有对此进行测试。

于 2014-01-18T00:22:27.403 回答