在 java 中使用预处理器是不必要的(也不可取的)。最好配置 Subversion(或您最喜欢的源代码管理器)以获取每个应用程序独有的各种 Java 文件的正确版本并引用平台中立的桥类(它扩展通过 subversion 引入的正确平台类)直接从多个平台共享的全局类中引用特定于平台的类。但是,有时由于 Java 预处理器广泛用于正在重新利用的预先存在的代码中,我们不得不使用它。 (例如,制作现有 Blackberry 应用程序的新 Android 版本。)如果您发现自己处于这种情况,那么这里是如何在 Eclipse 内的 java 代码中使用预处理器:
安装天线插件:
确保您已保存在 Eclipse 中处理的所有内容。
转到 Eclipse 顶部菜单中的“帮助”,然后单击“安装新软件...”选项。
点击“添加...”按钮。
在“名称:”编辑框中输入“天线”,在“位置:”编辑框中输入“http://antenna.sf.net/update”,然后点击“确定”按钮。
扩展“未分类”插件组,选中“Antenna eclipse plugins”(版本 1.1.8)复选框,然后“单击”下一步按钮。
点击“完成”按钮。
如果弹出安全警告,请点击“确定”按钮。
确保关闭正在运行的任何其他 Eclipse 实例,然后单击“是”按钮重新启动此 Eclipse 实例。
将项目标记为可由 Antenna 处理:
如果需要,创建项目。
右键单击项目。
如果旁边没有复选标记,请单击位于弹出菜单四分之三下方的“天线预处理器”选项。
确保 Antenna 使用的 device.xml 文件位于正确的文件夹中。
这是一个示例 device.xml 文件:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<devices>
<device supportsPolishGui="true">
<capability name="android" value="true" />
<capability name="sqlite" value="true" />
<identifier>Android</identifier>
<features>isVirtual</features>
<groups>XT</groups>
</device>
</devices>
对于 Android,这是“项目”/resources,对于黑莓,这是“项目”/res。
(Android 只需要“project”/res 文件夹中的 Android 特定文件。)
为项目设置天线:
通过单击选择项目。
转到项目->属性->天线预处理器。
如果弹出警告提示您找不到设备,请单击“确定”按钮。
单击“设备数据库的可选目录”的“清除”按钮。如果组合框不为空。 (即使已经显示了正确的目录,也必须这样做)。
单击“浏览”按钮并选择 device.xml 所在的文件夹。 (对于 Android,这是 '"project"/resources',对于 Blackberry,这是 '"project"/res'。)
如果“设备名称”组合框不为空,请单击“清除”按钮。 (即使已经显示了正确的设备,也必须这样做。)
单击“搜索”按钮并选择设备。 (对于 Android,这是“Android”,对于 Blackberry,这是“Black Berry”。)
单击“确定”按钮。
Antenna 现在将遍历项目中的所有文件,并根据 device.xml 中的设置注释 ('// @') 或取消注释预处理器命令所包含的代码(必须以 '//#' 开头)文件。
注意:这可能会导致全局包中的 java 文件被标记为与 Subversion 不同步。如果其他人上传了他们的更改,然后您通过 Subversion 从头部获取更改,这可能会导致 Subversion 出现问题。如果全局 java 文件由于 Antenna 而被标记为与 Subversion 不同步,那么通常最好立即为您计划稍后更改的任何文件提交这些更改。
在项目初始设置后使用天线:
每当项目中的文件在此之后更改和保存时,天线将根据 device.xml 文件中的设置注释 ('// @') 或取消注释预处理器命令所包含的代码(必须以 '//#' 开头)保存过程的一部分。
注意:必须删除 Blackberry 预处理的 java 文件第一行中的 //#preprocess 语句,因为必须将 Antenna 用于所有 java 文件而不是 Blackberry 预处理器。
注意:如果更改了 device.xml 文件,那么您必须再次为使用上述 device.xml 的每个项目设置天线,以使更改生效。
此处解释了 Antenna 使用的预处理器命令和选项:
http://antenna.sourceforge.net/wtkpreprocess.php