2017-02-26 58 views
1

我們有「buildConfigField」方法,這將創造BuildConfig類的靜態最終變量buildTypes可創建編譯時配置類。當我們向xml文件添加任何資源時,android默認在R.java文件中創建一個ID常量。我想了解這背後的實現。

我要創建在的build.gradle文件中的Android項目的方法,這將讀取JSON文件,並創建類及其相關的靜態最終成員變量。如何從的build.gradle

{ 
    "Config": [ 
    { 
     "name": "usernameType", 
     "type": "String", 
     "value": "text" 
    } 
    ] 
} 

將這樣創建:

public static final Class Config { 

    public static final Item username = new Item("<item_type>","<item_name>","<item_value>"); 

    public class Item { 
    public String name, type, value; 
    public Item(String name, String type, String value){ 
     this.name=name; 
     this.type=type; 
     this.value; 
    } 

} 

我沒有我怎樣才能實現這個想法,這將基本建立在編譯時配置文件中的任何想法。

回答

1

您可以創建一個Gradle插件,該插件定義可以在JSON中讀取的Gradle任務,然後使用JavaPoet來寫出您的Java文件。

你風帶:

  • 搖籃Plugin對象,知道如何在自己正確的位置連接到Android構建過程,並創建一個...

  • 搖籃DefaultTask對象可配置和運行...

  • 一些普通(非Android)的Java代碼,它讀取的JSON(例如,通過GSON),並使用JavaPoet

This sample project演示設立搖籃插件,從my bookthis chapter充分解釋的基礎知識。 This sample project做幾乎你想要什麼,雖然我的JSON和Java是比你的有所不同。它是從我的書中詳細介紹在this chapter

原則,你可以做這一切的搖籃,雖然拉這一關所需的代碼量是否超過了我在build.gradle腳本通常看到的。