声明buildConfigField时使用local.properties字段

the*_*ang 7 android gradle android-studio android-gradle-plugin

我有build.gradle一个local.properties文件.我想声明一个值local.properties,用于未在版本控制中签入build.gradle.

我有buildConfigField合作:

buildTypes {
    debug {
        buildConfigField "String", "TEST", "test"
    }
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会导致错误:

buildTypes {
    debug {
        buildConfigField "String", "TEST", local.properties.get("test")
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 9

它可以实现如下:

def getProps(String propName) {
  def propsFile = rootProject.file('local.properties')
  if (propsFile.exists()) {
    def props = new Properties()
    props.load(new FileInputStream(propsFile))
    return props[propName]
  } else {
    return "";
  }
}
Run Code Online (Sandbox Code Playgroud)

在您的buildTypes块中:

buildTypes {
    debug {
        buildConfigField "String", "TEST", getProps("test")
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 如果找不到文件或 propName,最好抛出异常,而不是静默返回 null/空字符串。 (3认同)