我们在buildTypes中提供了'buildConfigField'方法,它将在BuildConfig类中创建一个静态最终变量。此外,当我们向xml文件添加任何资源时,android默认在R.java文件中创建一个ID常量。我想了解这背后的实现。
我想在build.gradle文件中的android项目中创建一个方法,它将读取json文件并创建类及其相关的静态最终成员变量。
{
"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;
}
}
我不知道如何实现这个想法,它基本上会在编译时创建配置文件。
答案 0 :(得分:2)
您可以创建一个Gradle插件,用于定义可以读入JSON的Gradle任务,然后使用JavaPoet写出您的Java文件。
你结束了:
Gradle Plugin
对象知道如何将自己附加到适当位置的Android构建过程并创建一个...
Gradle DefaultTask
对象,可配置并运行...
一些普通(非Android)Java代码,它读取JSON(例如,通过Gson)并使用JavaPoet
This sample project演示了设置Gradle插件的基础知识,并在this chapter的my book中提供了完整说明。尽管我的JSON和Java与你的有些不同,This sample project几乎可以满足您的需求。我的书中this chapter详细介绍了这一点。
原则上,您可以在Gradle中完成所有这些操作,但需要的代码量超出我在build.gradle
脚本中通常看到的数量。