【问题标题】:Android gradle define method not found找不到Android gradle定义方法
【发布时间】:2013-10-30 09:48:54
【问题描述】:

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

当前构建脚本:

   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:评估项目“:Test”时出现问题。

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

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

【问题讨论】:

  • defineHost("test2) 上缺少结束引号可能会导致您的问题?
  • 抱歉,将脚本转换为公共时出现拼写错误 ;)

标签: android gradle


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我相信这会奏效:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-28
      相关资源
      最近更新 更多