2017-02-09 385 views
4

在Android gradle这个文档说约buildConfigField:Gradle buildConfigField:数组和地图的语法?

空隙buildConfigField(字符串型,字符串名,字符串值)

添加新字段到生成BuildConfig类。该字段生成为:type name = value;

这意味着它们中的每一个都必须具有有效的Java内容。如果该类型是一个字符串,则该值应该包含引号。

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

有没有人有一些例子或文件?

+0

这是Groovy代码。所以如果你想知道语法,看看那里。 –

+1

这不是关于groovy语法,或多或少关于可用类型。但我同时解决了这个问题...... – Fahim

回答

7

对于数组

app.gradle

 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; 
0

好吧我现在。参数在Java中被1:1翻译,这意味着实际上您需要在gradle中编写java代码并正确地转义。

对于HashSet的:

buildConfigField "java.util.Set<String>", "MY_SET", "new java.util.HashSet<String>() {{ add(\"a\"); }};"