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

Gradle buildConfigField:数组的语法

何甫
2023-03-14

android gradle留档说关于build dConfigField:

void buildConfigField(String type, String name, String value)

将新字段添加到生成的BuildConfig类中。该字段生成为:类型名称=值;

这意味着每一个都必须有有效的Java内容。如果类型是String,则该值应包括引号。

我找不到关于数组、Arraylist或HashMap的buildConfigField值语法的任何信息?因为它们被编译成java代码,所以通常一切都是可能的。

有人有一些例子或文档吗?

共有3个答案

裴钧
2023-03-14

这里还有一个例子

具有以下环境的Gradle文件:

ext {
    // Environments list
    apiUrl = [
            prod         : "https://website.com",
            preprod      : "https://preprod.website.com"
    ]
}

Gradle Android文件:

private static String getApiUrlHashMapAsString(apiUrlMap) {
    def hashMap = "new java.util.HashMap<String, String>()" + "{" + "{ "
    apiUrlMap.each { k, v -> hashMap += "put(\"${k}\"," + "\"${v}\"" + ");" }
    return hashMap + "}" + "}"
}

android {
    defaultConfig {
         buildConfigField "java.util.Map<String, String>", "API_URLS", getApiUrlHashMapAsString(apiUrl)
    }
}

在您的代码中:

BuildConfig.API_URLS
郏实
2023-03-14

恕我直言,使用build dConfig字段的原因是将重要数据排除在代码类环境变量之外。

另一个例子-静态数组gradle.properties(需要Gradle 2.13或以上):

格拉德尔。特性:


nonNullStringArray=new String[]{ \n\
    \"foo\",\n\
    \"bar\"\n}

建筑格拉德尔:

buildConfigField "String[]", "nonNullStringArray", (project.findProperty("nonNullStringArray") ?: "new String[]{}")

buildConfigField "String[]", "nullableStringArray", (project.findProperty("nullableStringArray") ?: "null")


井昊乾
2023-03-14

用于阵列

应用程序。格拉德尔

        buildConfigField "String[]", "URL_ARRAY",
        "{" +
        "\"http:someurl\"," +
        "\"http:someurl\"," +
        "\"http:someurl\"" +
        "}"

对于地图

        buildConfigField "java.util.Map<String, String>", "NAME_MAP", 
                 "new java.util.HashMap<String, " +
                 "String>() {{ put(\"name\", \"John\"); put(\"name1\",  \"John\"); put(\"name2\", " +
                "\"John\"); }}"

代码中的访问:

HashMap<String, String> name = (HashMap<String, String>) BuildConfig.NAME_MAP;
 类似资料:
  • 主要内容:例子,命名列和行,访问数组元素,操纵数组元素,跨数组元素的计算数组是可以在二维及以上存储数据的R数据对象。 例如 - 如果创建一个维数组,那么它将创建个矩形矩阵,每个矩阵具有行和列。数组只能存储数据类型。 数组可通过使用函数来创建。 它将向量作为输入,并使用参数中的值来创建数组。 例子 以下示例创建两个矩阵的数组,每个矩阵具有行和列。 当我们执行上述代码时,会产生以下结果 - 命名列和行 可以使用参数为数组中的行,列和矩阵命名。 当我们执行上述代码时,会产生

  • 主要内容:Go语言数组的声明,比较两个数组是否相等,遍历数组——访问每一个数组元素数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组。 和数组对应的类型是 Slice(切片),Slice 是可以增长和收缩的动态序列,功能也更灵活,但是想要理解 slice 工作原理的话需要先理解数组,所以本节主要为大家讲解数组的使用,至于 Slice(切片)将在《 Go语言切片》一节中为大家讲解。 Go语言数组

  • Go 语言提供了数组类型的数据结构。 数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。 相对于去声明number0, number1, ..., and number99的变量,使用数组形式numbers[0], numbers[1] ..., numbers[99]更加方便且易于扩展。 数组元素可以通过索引(位置)来读取(或者

  • 数组是一种内存分配的形式,数组是定义了一个连续的空间,与指针类似。 数组定义方式 类型 数组名[数组大小];//类型为每个空间的大小,我们通过数组名和下标访问数据,数组名指向存储数据的首地址,但是我们不可以改变数组名指向的地址。数组大小只有在定义的时候生效,定义之后不可以被改变。 int a[100]; //申请了一个名叫a的数组,它包含了100个整型。 数组的访问 我们可以通过数组的下标访问数

  • 数组是编程语言中用来存储元素的集合。在 C 语言中,集合是储存相同类型元素的集合。并且可以通过一个名称来来访。 -------------------------------------------- | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | …… | N-1 | -------------------------------------------- 第一个元素

  • 数组是一个可以存放相同数据类型数据的定长序列。由于数组是定长的,在使用场景并不丰富,所以在 Go 语言中通常使用的是切片(Slice)。想要使用切片,就先要了解数组,所以在本文先介绍 Go 语言中数组的使用。 1. 数组的声明 数组的声明形式形如var 数组名 [数组长度]数组类型,其中数组类型可以是数组本身,也就是数组类型的数组,这样就构成了多维数组。和变量的声明相同,数组在声明时会初始化变量类