Cha*_*ltz 2 android gradle android-gradle-plugin
以下是我尝试在 Gradle 中为 Android 应用程序执行的操作的极其简化的版本:
android {
buildTypes {
debug {
buildConfigFieldMyWay("keyName", "keyValue")
buildConfigField("String", "keyName", "keyValue") }
}
}
}
def buildConfigFieldMyWay(String keyName, String keyValue) {
buildConfigField("String", keyName, keyValue)
}
Run Code Online (Sandbox Code Playgroud)
真实的版本更复杂,这就是为什么将我正在做的事情组织到单独的函数中会很好。
问题是,当我执行 Gradle 同步时,出现以下错误:
No signature of method: build_byqgds5lao5ipgp4gk5ftyud4.android() is applicable for argument types: (build_byqgds5lao5ipgp4gk5ftyud4$_run_closure2) values: [build_byqgds5lao5ipgp4gk5ftyud4$_run_closure2@536e468e]
我认为这与 Android 中使用的 DSL Gradle 有关;当buildConfigField()
在 内部调用时android { buildTypes { debug
,它正在buildConfigField()
一个BuildType
对象上运行。如果我从一个单独的函数调用它,则它无法BuildType
进行操作。
因此,我要么需要修改 DSL,以便buildConfigFieldMyWay()
可以调用我的函数 ()android { buildTypes { debug
并对BuildType
对象进行操作,要么需要将 传递BuildType
给该函数。我可能需要在这里使用一些简单的语法,但我没有找到。它是什么?
您可以在函数内传递构建类型buildConfigFieldMyWay
:
def buildConfigFieldMyWay(buildType, String keyName, String keyValue) {
buildType.buildConfigField("String", keyName, keyValue)
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用以下命令获取构建类型it
:
android {
buildTypes {
debug {
buildConfigFieldMyWay(it, "keyName", "keyValue")
buildConfigField("String", "keyName", "keyValue")
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
735 次 |
最近记录: |