我想从 android 创建一个类似于 R 的自动生成的资源文件。我知道如何解析和创建文件,并基本上创建一个新的类文件。我不知道该怎么做是开始这个自动生成过程。
因此,使用 eclipse(尽管如果有办法以不可知的方式实现这一点,我更喜欢它),我如何触发自动生成会话来读取属性文件并创建一个包含静态变量的 .java 文件和这个解析文件中的“密钥”,然后我可以从我的代码中引用?
我想从 android 创建一个类似于 R 的自动生成的资源文件。我知道如何解析和创建文件,并基本上创建一个新的类文件。我不知道该怎么做是开始这个自动生成过程。
因此,使用 eclipse(尽管如果有办法以不可知的方式实现这一点,我更喜欢它),我如何触发自动生成会话来读取属性文件并创建一个包含静态变量的 .java 文件和这个解析文件中的“密钥”,然后我可以从我的代码中引用?
已经提供了一些如何生成 java 源文件的示例。读取属性文件和调用这些 API 之一应该相对容易。
要触发代码生成过程,您需要添加自定义构建步骤。使用 Ant,只需添加一个自定义任务。然后将其连接到 Eclipse Builder:项目 Properties -> Builders -> New。
随后,Eclipse 应自行查找并刷新此文件。如果没有,请检查您的配置:首选项-> 常规-> 工作区-> 找到“使用本机挂钩或轮询刷新”和类似的并检查它们。(请注意,我不能 100% 确定这最后一部分会起作用。)
阻力最小的路径是单独运行此构建步骤。如果您的属性文件不经常更改,那么它应该没什么大不了的。这类似于您使用 Protocol Buffers、JAXB、wsdl2java 等时所做的事情。如果您希望一切都像 R.java 那样神奇地工作,那么您可能需要做一些更复杂的事情:
- 尝试使用 Eclipse Builder 选项来控制执行 Ant 任务的时间 - 如果您无法弄清楚,那么我会检查 Eclipse 如何连接到上述项目(即,到 Protocol Buffers、JAXB、wsdl2java等) - 查看 ADT 自定义 PreCompilerBuilder 类 - 查看build-helper-plugin
通常使用 aResourceBundle
创建一个允许您通过键查找属性的对象。您可以ResourceBundle
在Java Trail上了解。
基本思想是你有一个带有.properties
扩展名的文本文件。您将ResourceBundle
对象指向该文件。然后,您可以使用getString()
orgetObject()
方法将密钥传递给您想要的属性。这就是它的全部。您只需要ResourceBundle
在启动程序时(或在您需要它之前的某个时间)加载。
如果您创建自己的具有 aResourceBundle
作为成员值的类,您可以使用这样的简单代码来获得一个简单的get()
方法来获取属性值:
public String get(String aString)
{
String sVal = null;
try
{
sVal = (String)myProperties.getObject(aString);
}
catch (MissingResourceException e)
{
log.debug("Missing Property Value: "+aString);
}
return sVal;
}
我希望这很有用。