如何从 Gradle 中的另一个函数调用 buildConfigField()?
How to call buildConfigField() from another function in Gradle?
这是我在 Gradle 中为我的 Android 应用程序尝试做的极其简化的版本:
android {
buildTypes {
debug {
buildConfigFieldMyWay("keyName", "keyValue")
buildConfigField("String", "keyName", "keyValue") }
}
}
}
def buildConfigFieldMyWay(String keyName, String keyValue) {
buildConfigField("String", keyName, keyValue)
}
真实版本更复杂,这就是为什么最好将我正在做的事情组织成单独的函数。
问题是,当我进行 Gradle 同步时,出现了这个错误:
No signature of method: build_byqgds5lao5ipgp4gk5ftyud4.android() is applicable for argument types: (build_byqgds5lao5ipgp4gk5ftyud4$_run_closure2) values: [build_byqgds5lao5ipgp4gk5ftyud4$_run_closure2@536e468e]
我认为这与 DSL Gradle 与 Android 一起使用有关;当在 android { buildTypes { debug
内部调用 buildConfigField()
时,它是 BuildType
对象上的 运行 buildConfigField()
。如果我从一个单独的函数中调用它,则没有 BuildType
可以对其进行操作。
所以我要么需要修改 DSL 以便我的函数 (buildConfigFieldMyWay()
) 可以在 android { buildTypes { debug
中调用并对 BuildType
对象进行操作,要么我需要通过BuildType
到函数。可能有一些我需要在这里使用的简单语法,但我没有找到。这是什么?
您可以在函数内部传递构建类型 buildConfigFieldMyWay
:
def buildConfigFieldMyWay(buildType, String keyName, String keyValue) {
buildType.buildConfigField("String", keyName, keyValue)
}
然后,您可以使用 it
:
获取构建类型
android {
buildTypes {
debug {
buildConfigFieldMyWay(it, "keyName", "keyValue")
buildConfigField("String", "keyName", "keyValue")
}
}
}
这是我在 Gradle 中为我的 Android 应用程序尝试做的极其简化的版本:
android {
buildTypes {
debug {
buildConfigFieldMyWay("keyName", "keyValue")
buildConfigField("String", "keyName", "keyValue") }
}
}
}
def buildConfigFieldMyWay(String keyName, String keyValue) {
buildConfigField("String", keyName, keyValue)
}
真实版本更复杂,这就是为什么最好将我正在做的事情组织成单独的函数。
问题是,当我进行 Gradle 同步时,出现了这个错误:
No signature of method: build_byqgds5lao5ipgp4gk5ftyud4.android() is applicable for argument types: (build_byqgds5lao5ipgp4gk5ftyud4$_run_closure2) values: [build_byqgds5lao5ipgp4gk5ftyud4$_run_closure2@536e468e]
我认为这与 DSL Gradle 与 Android 一起使用有关;当在 android { buildTypes { debug
内部调用 buildConfigField()
时,它是 BuildType
对象上的 运行 buildConfigField()
。如果我从一个单独的函数中调用它,则没有 BuildType
可以对其进行操作。
所以我要么需要修改 DSL 以便我的函数 (buildConfigFieldMyWay()
) 可以在 android { buildTypes { debug
中调用并对 BuildType
对象进行操作,要么我需要通过BuildType
到函数。可能有一些我需要在这里使用的简单语法,但我没有找到。这是什么?
您可以在函数内部传递构建类型 buildConfigFieldMyWay
:
def buildConfigFieldMyWay(buildType, String keyName, String keyValue) {
buildType.buildConfigField("String", keyName, keyValue)
}
然后,您可以使用 it
:
android {
buildTypes {
debug {
buildConfigFieldMyWay(it, "keyName", "keyValue")
buildConfigField("String", "keyName", "keyValue")
}
}
}