buildConfigField可以在gradle脚本中定义我们需要的变量,然后在代码中引用。

官方文档上buildConfigField 定义的格式是这样的:

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

我们可以很方便的定义基础类型,如type为Long String int boolean等基础类型,但是我们能不能定义数组,Hashmap,ArrayList等java常用的数据结构呢?

答案是可以的,我们可以定义任何我们想要的对象。

如我们可以定义字符串数组:

buildConfigField "String[]", "ARRAY",

"{" +

"\"test1\"," +

"\"test2\"," +

"\"test3\"" +

"}"

和Map类型:

buildConfigField "java.util.Map", "NAME_MAP",

"new java.util.HashMap

"String>() {{ put(\"name\", \"John\"); put(\"name1\", \"daniel\"); put(\"name2\", " +

"\"anna\"); }}"

测试下,build.gradle中定义如下:

//string 类型需要引号包括

buildConfigField "String", "CHANNEL_KEY", "\"APP_CHANNEL\""

buildConfigField "String[]", "ARRAY",

"{" +

"\"test1\"," +

"\"test2\"," +

"\"test3\"" +

"}"

buildConfigField "java.util.Map", "NAME_MAP",

"new java.util.HashMap

"String>() {{ put(\"name\", \"John\"); put(\"name1\", \"daniel\"); put(\"name2\", " +

"\"anna\"); }}"

buildConfigField "java.util.ArrayList", "NAME_ARRAYLIST",

"new java.util.ArrayList() {{ add(\"John\"); add( \"daniel\"); add(\"anna\"); }}"

build后生成的BuildConfig文件如下:

/**

- Automatically generated file. DO NOT MODIFY

*/

package com.wxkly.aroutertest;

public final class BuildConfig {

// Fields from default config.

public static final String[] ARRAY = {"test1","test2","test3"};

public static final String CHANNEL_KEY = "APP_CHANNEL";

public static final java.util.ArrayList NAME_ARRAYLIST = new java.util.ArrayList() {{ add("John"); add( "daniel"); add("anna"); }};

public static final java.util.Map NAME_MAP = new java.util.HashMap() {{ put("name", "John"); put("name1", "daniel"); put("name2", "anna"); }};

public static final boolean isBuild = false;

public static final int size = 0;

}

可以看到生成了相应的java.util.ArrayList,java.util.Map。

这里需要注意的是buildConfig文件中无法使用import引入相关的包名,所有我们在定义buildConfigField的时候需要使用类名加package路径如:java.util.Map 。

android field 类型,Gradle buildConfigField 使用Hashmap ArrayList 等类型相关推荐

  1. android build获取ext,android – 如何在Gradle中获取当前构建类型

    我的问题非常直接且易于理解. 题 在Gradle中,有什么办法可以在运行时获取当前的构建类型.例如,在运行assembleDebug任务时,build.gradle文件中的任务是否可以根据此任务与调试 ...

  2. 利用 Android Studio 和 Gradle 打包多版本APK

    视频汇总首页:http://edu.51cto.com/lecturer/index/user_id-4626073.html ==================================== ...

  3. java调用android打包_Android Gradle打包基础

    Android gradle打包基础 gradle目录 [代码]java代码:12345MyApp├── build.gradle ( 可以查看Gradle的版本 )├── settings.grad ...

  4. Android Studio中Gradle使用详解

    转自:http://www.jianshu.com/p/02cb9a0eb2a0 一)基本配置 build配置 buildscript {repositories {jcenter() }depend ...

  5. Java和Android构建工具Gradle深入了解

    Gradle3.0编程与自动化构建 gradle是一款最新的,功能强大的构建工具,它使用程序代替传统的XML配置,构建项目更加灵活.gradle有丰富的第三方插件. Gradle相关介绍及开发环境搭建 ...

  6. Android Studio build.gradle配置详解

    Android Studio是采用gradle来构建项目的,gradle是基于groovy语言的,如果只是用它构建普通Android项目的话,是可以不去学groovy的.当我们创建一个Android项 ...

  7. android 项目build.gradle,Android build.gradle 配置详解

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? Gradle 简介 Android Studio 是采用 Gradle 来构建项目的.Gradle 是一个非常先进的项目 ...

  8. 使用gradle构建android项目,Android中使用Gradle来构建App项目的入门指南

    gradle是Android开发中引入的全新的构建系统,因为全新的构建系统主要是出于下面的目的: 1. 方便复用代码和资源 2. 构建多种版本的apk更见简单,不论是为多渠道构建不同的apk还是构建不 ...

  9. Android Studio之gradle的配置与介绍

    1.gradle的简单介绍 Gradle是可以用于Android开发的新一代的Build System,也是Android Studio默认的build工具.其实Gradle脚本是基于一种JVM语言- ...

最新文章

  1. DNS域名解析优化之tinydns/djbdns篇——测试篇
  2. 在AI Studio上部署外部可以直接调用的云端服务
  3. centos安装python3_在CentOS8 上安装Python3
  4. 2018.08.20高二互测
  5. 竞品分析方法论:7个视角,50+维度
  6. [spring boot]自定义log配置文件名
  7. java 判断日期为第几天
  8. (转载)mysql 用drop和delete方法删除用户的区别
  9. MySQL索引原理及慢查询优化,了解一下?
  10. 微信小程序盲盒系统源码 带教程
  11. php酒店系统论文,PHP酒店网站管理系统毕业论文
  12. Python 教程之再见 Excel你 Python 的spreadsheets电子表格
  13. 手写Vue个人组件库——fl-Badge
  14. 扁豆凝集素LCA/LcH填料/小扁豆凝集素-琼脂糖凝胶/双花扁豆凝集素DBA/黑皮扁豆凝集素
  15. LaTeX教程(一)——LaTeX介绍以及导言详解
  16. 一战赚了1090亿,恐怖的张一鸣!
  17. 数字电路技术基础(三)
  18. PC版小米cc机器人自定义api接口插件PJ版
  19. 以太网转串口ttl 原理图 PCB
  20. Linux Socekt 相关操作代码

热门文章

  1. 为什么SQL Server DBA对Python感兴趣?
  2. Web项目之网络爬虫
  3. python 空值(NoneType)
  4. Appium + python - online-install-apk
  5. [IDEA] 快捷键学习
  6. poj 1160 dp
  7. PHP try catch用法
  8. 2010中小网站运营报告:社区论坛网站后来居上
  9. 改变TFS本地映射路径.
  10. LeetCode_database刷题记录(595. 大的国家)