3 


使用项目

在上一章,您学习了如何在 MIDP 开发周期借助 Sun JavaTM Wireless Toolkit for CLDC 来完成任务。本章,您将进一步了解项目的详细使用方法,包括以下方面:


3.1 选择 API

每个项目均是根据某个 API 集而生成的。Sun JavaTM Wireless Toolkit for CLDC 支持许多 API。第 1.6 节“支持的技术”中提供了详细的完整列表。通过该工具包,用户可根据要在软件上运行的设备的类型为某个 API 子集开发应用程序。

例如,虽然该工具包支持 JSR 184,即 Mobile 3D Graphics API,但用户可能希望开发不使用该 API 的应用程序。在项目的“API 选择”设置中,用户可以仅选择要使用的 API。

要了解整个过程,请启动工具包,并打开一个项目,单击“设置”以显示图 3-1 中所示的窗口:

图 3-1 项目设置窗口

用于“API 选择”的项目设置窗口 目标平台为 MSA。

在“API 选择”窗格上,“目标平台”设置用于控制该窗格其余部分的外观。选择最符合您需要的设置,并通过下面的控件调整您的选择。例如,如果要为其开发应用程序的设备符合 Java Technology for the Wireless Industry JSR,则请从组合框中选择 "JTWI"。然后使用下面的控件指定 CLDC 的版本并选择可选 API。

工具包会在您编译源代码时应用您的选择。



注 - API 选择不适用于仿真器。仿真器支持所有可用 API。在项目设置中所做的 API 选择仅用于生成项目。实际上,API 选择所选的是编译和预校验源文件时工具包要使用的类路径。




3.2 更改 MIDlet 套件属性

在项目设置窗口中,用户还可以控制 MIDlet 套件属性,这些属性存储在 MIDlet 套件 JAR 文件的描述符和清单文件中。

要查看这些属性,请打开项目,然后单击“设置”按钮。设置窗口左侧的图标栏中显示三个属性图标:“必须的”、“可选的”和“用户定义的”。

有关必需及可选属性的定义,请参阅 MIDP 2.0 规范最终版 2(也称为 MIDP 2.1)。Sun JavaTM Wireless Toolkit for CLDC 能处理大多数细节。在开发初期,用户可能无需考虑这些属性。一旦应用程序能够稳定运行,您开始考虑在真实设备上进行部署以及将产品投放市场时,则需调整这些值。

要调整“必须的”或“可选的”窗格中的值,请单击要更改的属性关键字旁的单元。输入新值。

图 3-2 编辑 MIDlet 套件属性

"Tiny" 项目的 Midlet 套件属性

要创建新的用户定义属性,请单击“用户定义的”图标。单击“添加”按钮并填写属性名称和值,然后单击“确定”。

要编辑用户定义的属性值,请单击该关键字旁的值列,与编辑必需属性或可选属性的方法相同。

要删除某个属性,请选择该属性,然后单击“删除”。


3.3 操纵 MIDlet

项目设置还提供了添加或修改当前 MIDlet 套件项目中所包含的 MIDlet 的方法。要了解整个过程,请启动工具包,然后打开一个现有项目。单击“设置”,然后选择 "MIDlets" 图标。您将看到该项目中的所有 MIDlet 的列表。如果您刚创建了一个新项目,工具包就会自动填写第一个 MIDlet 条目。

图 3-3 项目中的 MIDlet 列表

项目 "Tiny" 的 MIDlet 列表

要添加新 MIDlet,请单击“添加”,然后填写名称、图标文件名和类名。如果您愿意,也可以不填写图标文件名。要更改值或删除 MIDlet 条目,请使用“编辑”和“删除”按钮。

MIDlet 名称是按 MIDlet 套件启动时显示的顺序呈现给用户的。您可以通过选择 MIDlet 并单击“上移”或“下移”来修改此顺序。


3.4 使用推送注册表

还可以通过使用项目设置来使用 MIDlet 套件的推送注册表设置。单击“设置”,然后选择“推送注册表”图标。

图 3-4 项目推送注册表设置

此图显示 WMADemo 项目的推送注册表设置

要向推送注册表中添加条目,请按“添加”并填写连接 URL、MIDlet 类以及允许的发送方的值,然后单击“确定”。要编辑条目,请选择该条目,然后按“编辑”按钮。要删除推送注册表条目,请选择该条目,然后单击“删除”。

如果您确实创建了应用程序的推送注册表条目,请务必也输入相应的权限。有关详细信息,请参见第 6 章


3.5 设置内容处理器

Sun JavaTM Wireless Toolkit for CLDC 支持由 JSR 211 定义的内容处理 API (Content Handler API, CHAPI)。CHAPI 的基本概念是指 MIDlet 可依据传入内容(文件)进行启动。现代的移动电话可使用 SMS、红外、蓝牙、电子邮件及其他方法来接收内容。大多数内容都具有关联的内容类型。CHAPI 会根据特定的内容类型指定启动 MIDlet 的系统。

要修改项目中的内容处理器设置,请单击“设置”,然后选择“内容处理器”窗格。

图 3-5 配置内容处理器

左侧选择了“内容处理器”图标的 CHAPIDemo 的项目设置窗口

列表中的每一行都代表内容处理器的设置。在本示例中,已配置了两个内容处理器,一个用于 TextViewer,一个用于 ImageViewer。要创建新的内容处理器,请按“添加”,要编辑现有内容处理器,请按“编辑”。您可以通过选择一个内容处理器并单击“上移”和“下移”按钮来调整内容处理器的顺序。要从列表中删除内容处理器,请按“删除”。

添加或删除内容处理器时,将显示详细信息窗口:

图 3-6 内容处理器详细信息

选择了“内容处理器”选项卡的内容处理器详细信息窗口

在“类”字段中,填写 MIDlet 的名称。"ID" 用于调用内容处理器并控制访问的标识字符串。

“内容类型”是该内容处理器所负责的内容类型的列表。使用“添加”和“删除”管理列表。后缀字符串是 URL 后缀列表,这些 URL 后缀通常为显式内容类型的替换后缀。最后,允许的访问是内容处理器 ID 列表,这些 ID 指示了对该内容处理器具有访问权限的其他内容处理器。如果列表为空,则将向所有其他内容处理器授予该内容处理器的访问权限。

内容处理器具有相关操作,这使调用应用程序可选择处理内容的方式。例如,图像查看器内容处理器可能包括按图像的原始大小查看图像的操作以及全屏显示图像的操作。单击内容处理器详细信息窗口内的“操作”选项卡可编辑要对内容处理器执行的操作。

图 3-7 内容处理器操作

选择了“操作”选项卡的内容处理器详细信息窗口

“操作”列表中包含该内容处理器的操作的内部名称。“语言环境”指显示用户可读操作名称时,可用的所有语言环境列表。“本地化的操作”是包含各个语言环境用户可读操作名称的表格。每一行表示一个语言环境,并且操作按列列出。用户可通过读取一行来查看某一特定语言环境所有用户可读操作的名称。


3.6 项目目录结构

项目有一个标准的目录结构。项目本身由 apps 子目录中的某个目录表示。例如,在 Windows 上,demos 项目位于 workdir\apps\demos 中。下表对项目目录结构进行了说明。


表 3-1 项目目录结构

目录

描述

bin

打包项目时,会将 MIDlet 套件描述符和 JAR 文件置于该目录下。该目录还包含未打包的清单信息,可能还包含一个 HTML 文件,供使用“通过 OTA 运行”时内部使用。

classes

该目录用于存储已编译的类文件。

lib

该目录中用于存储第三方库以在该项目中包括该库。

res

该目录用于存储图像、声音以及其他资源文件。它们被打包放入 MIDlet 套件 JAR 文件的根目录下。

src

该目录用于存储源文件。

tmpclasses

供工具包使用。

tmplib

供工具包使用。


 

此外,项目目录还包含 project.properties 文件,其中包含有关该项目的信息。

要从项目中删除临时目录和文件,请选择“项目”>“清除”。


3.7 使用第三方库

Sun JavaTM Wireless Toolkit for CLDC 允许用户在应用程序中并入第三方库。第三方库可提供用户不想自己生成的功能,从而减少开发时间,但用户需时刻注意 MIDlet 套件 JAR 文件的大小。

在应用程序中使用第三方库时,JAR 会根据第三方库的大小而变大。用户可使用混淆器来减小代码大小,良好的混淆器甚至还可以除去不使用的库部分。即使使用混淆器,第三方库也可能比您自己从头开始精心编写的自定义代码大。您必须在减少开发时间和 MIDlet 套件 JAR 文件的大小之间权衡利弊。

Sun JavaTM Wireless Toolkit for CLDC 提供了两种并入第三方库的方法。项目设置中的“外部 API”窗格使用户可轻松在项目中并入库或排除库。此外,您还可以在特定位置放置库,使一个或所有项目得以使用。

3.7.1 使用外部 API

要指定应包括的 API,请单击“设置”,然后单击“外部 API”图标。将显示可用外部 API 的列表(该列表可能为空)。

要在生成时将 API 添加到类路径中,请选中“使用”列中的框(请参见图 3-8)。如果还希望将 API 捆绑到应用程序中,还需选中“包”框。如果要部署应用程序的设备上不存在所选的外部 API,则需在应用程序中捆绑这些 API。

图 3-8 选择外部 API

CHAPIDemo 项目的外部 API。

3.7.2 用于一个项目的第三方库

生成和打包项目时,将使用项目的 lib 目录下所存储的库文件。库文件应为 Java 技术类的 JAR 或 Zip 文件。

因此,如果在 Windows 上执行安装,并且应用程序的名称为 Tiny,则类库位于 workdir\apps\Tiny\lib 中。生成、运行、调试和打包项目时,将使用 lib 目录下的类文件。

3.7.3 用于所有项目的第三方库

某些设备的库可供所有已安装的 MIDlet 套件使用。例如,某制造商可以使其所有设备均支持附加的 API。在这种情况下,用户需要在生成和测试应用程序时可以使用这些库。由于安装 MIDlet 套件的设备本身就具有这些库,因此用户不希望将这些库包含在打包的 MIDlet 套件中。

只需将这些库放入 workdir\apps\lib 目录下即可。所有项目均可使用该目录下的库。


3.8 配置 Wireless Toolkit

工具包包括某些高级配置选项。可通过编辑位于以下位置的 ktools.properties 文件的副本来使用这些选项:


对于 Windows 系统:

toolkit\wtklib\Windows\ktools.properties

对于 Linux 系统:

toolkit/wtklib/Linux/ktools.properties


 

ktools.properties 复制到 workdir/os/wtklib,然后按照本章其余部分所述的内容进行更改。

下次启动工具包时,可以看到对 ktools.properies 所进行更改的效果。

3.8.1 更改控制台字体

可通过编辑两个属性来更改控制台(以及其他文本区域)中所使用的字体。此处为将字体更改为 Times New Roman 20 号的示例:

font.JTextArea=Times New Roman
font.size.JTextArea=20

要恢复默认字体和大小,请删除这两个属性。

3.8.2 设置应用程序目录

默认情况下,Sun JavaTM Wireless Toolkit for CLDC 会将应用程序存储在工作目录的 apps 子目录下。在 ktools.properties 中以如下形式添加一行,即可更改这一默认设置:

kvem.apps.dir: 应用程序目录

对于 Windows,目录路径中的所有反斜杠 (\) 字符前都必须再加一个反斜杠。另外,目录路径不能包含任何空格。

例如,要将应用程序目录设置为 D:\dev\midlets,请使用:

kvem.apps.dir: D:\\dev\\midlets

Linux 路径可以像往常一样指定。

3.8.3 设置 javac 编码属性

默认情况下,javac 使用的是当前运行的 Java SE 平台中的编码集。有关如何覆盖默认源文件编码的信息,请参见附录 C

3.8.4 使用修订控制系统

使用 filterRevisionControl 属性,可将工具包配置为识别和忽略由 SCCS、RCS 和 CVS 修订控制系统创建的辅助文件。

要识别和忽略辅助文件,应该在 ktools.properties 中包含下面一行:

kvem.filterRevisionControl: true

这样可以防止工具包将修正控制文件视为源和资源文件。例如,工具包将名为 src\SCCS\s.MyClass.java 的文件视为 SCCS 修订控制文件,而不是 Java 技术源文件。