当前位置: 首页 > 知识库问答 >
问题:

声明 buildConfigField 时使用 local.properties 字段

曹浩波
2023-03-14

我有一个< code>build.gradle和一个< code>local.properties文件。我想在< code>local.properties中声明一个值,该值未签入版本控制,以便在< code>build.gradle中使用。

我让< code>buildConfigField处理:

buildTypes {
    debug {
        buildConfigField "String", "TEST", "test"
    }
}

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

buildTypes {
    debug {
        buildConfigField "String", "TEST", local.properties.get("test")
    }
}

共有1个答案

谢和颂
2023-03-14

这可以通过以下方式实现:

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 "";
  }
}

在buildTypes块中:

buildTypes {
    debug {
        buildConfigField "String", "TEST", getProps("test")
    }
}
 类似资料:
  • 问题内容: 如果我在一个类中有以下声明,其中是抽象类型: 是否能让我仍然能够更改中的对象的状态,但阻止我将新对象添加到列表中?如果我写错了,请您解释一下正在做什么以及何时应该使用关键字。 问题答案: 不,final关键字不会使列表或其内容不可变。如果您想要一个不可变的列表,则应使用: final关键字的作用是防止您为’synapses’变量分配新值。即,您不能写: 但是,您可以编写:

  • 问题内容: 何时使用语句而不是准备语句。我想在没有参数的查询中使用语句,但是为什么不使用预处理语句呢?对于没有参数的查询,哪一个更快。 问题答案: 我想在没有参数的查询中使用语句,但是为什么不使用预处理语句呢? 还差得远 对于返回结果集或更新计数的INSERT,UPDATE和DELETE语句,使用PreparedStatement。正如Joachim所指出的,它们不适用于DDL语句,也不适用于应使

  • 问题内容: 在没有泛型类型的类中,我想声明一个类似于以下内容的相当复杂的泛型字段: 问题是Java编译器不会让我:) 所以我的问题是如何正确地引入T和S,而又不向类Client添加类型。 我的目标是强制成为您选择的类的子类型和作为子类。 问题答案: 你不能 唯一的选择是在类声明中声明泛型类型参数。如果您的类没有泛型类型参数,则其成员不能为泛型。您必须在类成员的声明中使用实际类型。

  • 修改过程后,仍然返回错误#1324-未定义的游标:getid。我如何解决这个问题?

  • 问题内容: 我想在两个小数点后两位之间使用断言,我使用这个: 但是JUnit日志显示: 问题答案: 测试两个对象是相同的对象,即它们是: 断言两个对象引用相同的对象。如果它们不相同,则会抛出一个没有消息的消息。 在您的情况下,由于和都是new ,所以对象不相同,因此是例外。 您要使用,测试两个对象是否相等,即: 断言两个对象相等。如果不是,则会抛出一个不带消息的消息。如果期望和实际相等,则认为它们

  • 如果我在一个类中有以下语句,其中Synapse是一个抽象类型: 最终是否允许我仍然能够更改列表中Synapse对象的状态,但阻止我向列表中添加新的Synapse对象?如果我错了,请您解释一下final正在做什么,以及我应该在什么时候使用关键字final。