J2ME手机游戏设计与开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.1 建立J2ME项目

2.1.1 创建MIDlet套件

MIDlet应用模型的一个核心目标就是,尽可能地使多个可以同时运行的MIDlet之间共享数据和资源。为了完成这样的目标,MIDP规范要求:需要共享数据和交互的MIDlet必须放在同一个JAR文件里面。这个封装起来的MIDlet集合就被称为MIDlet套件(MIDlet Suite)。

每个MIDlet套件都至少要有一个扩展了MIDlet类的主类。JAR清单文件标志了套件中的每个MIDlet及它们的名称和图标。MIDlet是由应用管理软件所启动的实体,当某个MIDlet套件被调用时,需要Java 虚拟机的支持才能执行相应的类。应用管理软件生成这个MIDlet的一个新实例,用来引导这个MIDlet启动、暂停和销毁。

MIDlet之间的数据和其他信息的共享由相应的API及它们的实现来控制,例如记录存储系统(RMS)API,当属于某个MIDlet套件的记录存储被套件中多个MIDlet共享时,就需要使用这些API。

为了保护MIDlet套件提供者的安全及实现数据共享,在MIDlet套件中的MIDlet、类和单独的文件不能够被单独地安装、更新或者删除,它们必须强制成为一体。换句话说,在MIDP中,安装、更新和删除的基本单元就是MIDlet套件。

使用新建项目向导,选择J2ME中的“J2ME Midlet Suite”命令来创建一个EclipseME项目,如图2-1所示。

向导的第一个界面和标准Java项目一致,设置项目的名字,以及项目的存储位置,如图2-2所示。

这里的项目在操作系统下的表现就是一个文件夹,所以命名时可以采用英文也可以使用数字等其他字符,但是要注意在同一个命名空间中不可以有同名的项目,这点与文件夹的建立相似。

图2-1 建立MIDlet套件

图2-2 “New J2ME Project”设置向导

在第2个界面里,从可用的设备定义中选择一个模拟器,用于编译、运行和调试项目。若有必要,以后可以在项目属性中改变这个设定。另外,在这个界面中,也可以改变项目的JAD文件的默认位置,JAD文件必须相对于项目的根目录来创建。创建项目之后也可以在包资源管理器中使用重构(重命名或移动)来修改JAD文件位置,如图2-3所示。

最后的界面可以调整源文件设置,相关的项目和库等,如图2-4所示。这是Eclipse的标准设置界面。如果项目需要外部的类库,只要把相应的JAR文件添加到“库”这个面板的列表中就可以了。EclipseME会自动把这些JAR文件和class文件一起进行管理。

图2-3 模拟器选择

图2-4 源文件设置

完成了上面的步骤之后,在工作空间里就可以看到下面如图2-5所示的一个项目。

图2-5 项目文件夹

2.1.2 MIDlet套件项目文件介绍

MIDlet套件简单理解就是MIDlet程序的一个集合。它包含了一个或多个MIDlet、资源文件及JAR manifest文件。在EclipseME里面创建了一个MIDlet套件其实就是相当于创建了一个Java Project一样。

MIDlet套件是一个MIDlet中所有的文件及作为 MIDlet一部分的必需的资源的集合。MIDlet套件由以下几部分组成:

·附在JAR文件中的Java类文件;

·描述JAR文件内容的清单文件(mainifest.mf);

·附在JAR文件中的资源(如图像)和Java应用程序描述器文件(JAD);

·应用程序管理器。

1.mainifest.mf清单文件

根据MIDP规范的规定,每个套件的JAR文件中必须包含一个名为mainifest.mf的文件。这个其实就是Java里面的.mf文件了。它包含了一些属性,如表2-1所示。

表2-1 mainifest文件内容属性

表2-1中这些属性并不是全部都需要的,可是如果没有列出下面6个属性值,应用程序管理器就会拒绝加载这个JAR。

MIDlet-Name
MIDlet-Version
MIDlet-Vendor
MIDlet-(序号)
MicroEdition-Profile
MicroEdition-Configuration

下面是一个简单的属性清单文件的例子:

MIDlet-Name:KOF2001
MIDlet-Version:1.0
MIDlet-Vendor:NeoRage Corporation Inc.
MIDlet-1:kof,/images/kof.png,kof.kofMIDlet
MicroEdition-Profile:MIDP-1.0
MicroEdition-Configuration:CLDC-1.0

2.Java应用程序描述器文件(JAD)

在有些设备上面并不一定要求JAM(应用程序管理器)上面要有JAD描述器文件。在MIDP 2.0中JAD描述器文件涉及了许多安全方面的问题,所以就显得非常重要了。一般在下载JAR文件前会先下载JAD描述器文件,为的是让设备了解这个套件是否适合自己。

虽然没有必要,仍然可以在JAR文件中包含一个JAD文件,就像清单文件一样,这个文件中也包含MIDlet的信息。创建一个JAD文件是基于以下两个原因的。

(1)向应用程序管理器提供信息,说明JAR文件的内容,使用这些信息,就可以判断一个MIDlet是否适合运行在这个设备上。例如,通过查看属性MIDlet-Data-Size,应用程序管理器可以确定MIDlet是否需要此设备可以提供的更多的内存。

(2)提供一种方法,可以把参数传送到MIDlet而不必更改JAR文件。

和清单文件一样,某些属性必须被定义,如果这些属性不可用,则应用程序管理器将不加载这个MIDlet,它们是:

MIDlet-Name
MIDlet-Version
MIDlet-Vendor
MIDlet-(序号)
MIDlet-Jar-URL
MIDlet-Jar-Size

MIDlet-Name、MIDlet-Version和MIDlet-Vendor的值必须与JAR中的清单文件中相同的属性的值一致。如果在这两个文件有什么不同,申请管理器不会加载这个JAR。

除了这些属性以外,如果两个文件中的另外名称具有相同的属性,但是属性值不相同的,将优先采取应用程序描述器文件(JAD)属性。

MIDP 1.0规范没有规定MIDlet-n属性是JAD文件的必需属性。可是,没有这个属性,就没有办法在设备模拟器中预览MIDlet。因此,出于完整性考虑,应该在JAD文件中包含MIDlet-n属性。

下面是一个非常简单的例子:

MIDlet-Name:Note Pad
MIDlet-Version:1.0
MIDlet-Vendor:ABC WorkGroup.
MIDlet-Jar-URL:http://www.abcworkgroup.com/MIDlets/notepad.jar
MIDlet-Jar-Size:26248
MIDlet-1:NotePad,/images/NotePad.png,NotePad.Main