如何在android.defaultConfig级别定义一个函数?
How to define a function at android.defaultConfig level?
在我 build.gradle 的 Android 项目中,使用以下说明创建 构建配置字段 。
android {
defaultConfig {
if (project.hasProperty('serverOnePath')) {
buildConfigField "String", "SERVER_ONE_PATH",
"\"${serverOnePath}\""
}
if (project.hasProperty('serverTwoPath')) {
buildConfigField "String", "SERVER_TWO_PATH",
"\"${serverTwoPath}\""
}
}
}
因此必须在 gradle.properties 中定义属性:
serverOnePath=http://example1.com/path
serverTwoPath=http://example2.com/path
我想将说明移动到 android.default
级别 可用的函数中。这是一个非工作草稿:
def addBuildConfigFieldIfPropertyIsPresent(
String propertyName, String buildConfigFieldName) {
if (project.hasProperty(propertyName)) {
android.defaultConfig.buildConfigField "String", buildConfigFieldName,
"\"${propertyName}\""
}
}
棘手的部分是 ${propertyName}
。将声明实际放入 defaultConfig
闭包中也很好。
试试这个:
android {
defaultConfig {
def configFieldFromProp = { propName, constName ->
if (project.hasProperty(propName)) {
buildConfigField "String", constName, "\"${project[propName]}\""
}
}
configFieldFromProp "serverOnePath", "SERVER_ONE_PATH"
configFieldFromProp "serverTwoPath", "SERVER_TWO_PATH"
}
}
您还可以将 guava 添加为构建脚本的依赖项,并使用 LOWER_CAMEL.to(UPPER_UNDERSCORE, propName)
避免输入相同的内容两次。
在我 build.gradle 的 Android 项目中,使用以下说明创建 构建配置字段 。
android {
defaultConfig {
if (project.hasProperty('serverOnePath')) {
buildConfigField "String", "SERVER_ONE_PATH",
"\"${serverOnePath}\""
}
if (project.hasProperty('serverTwoPath')) {
buildConfigField "String", "SERVER_TWO_PATH",
"\"${serverTwoPath}\""
}
}
}
因此必须在 gradle.properties 中定义属性:
serverOnePath=http://example1.com/path
serverTwoPath=http://example2.com/path
我想将说明移动到 android.default
级别 可用的函数中。这是一个非工作草稿:
def addBuildConfigFieldIfPropertyIsPresent(
String propertyName, String buildConfigFieldName) {
if (project.hasProperty(propertyName)) {
android.defaultConfig.buildConfigField "String", buildConfigFieldName,
"\"${propertyName}\""
}
}
棘手的部分是 ${propertyName}
。将声明实际放入 defaultConfig
闭包中也很好。
试试这个:
android {
defaultConfig {
def configFieldFromProp = { propName, constName ->
if (project.hasProperty(propName)) {
buildConfigField "String", constName, "\"${project[propName]}\""
}
}
configFieldFromProp "serverOnePath", "SERVER_ONE_PATH"
configFieldFromProp "serverTwoPath", "SERVER_TWO_PATH"
}
}
您还可以将 guava 添加为构建脚本的依赖项,并使用 LOWER_CAMEL.to(UPPER_UNDERSCORE, propName)
避免输入相同的内容两次。