2017-02-09 383 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\"); }};"