游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2750|回复: 0

j2me程序的开发流程2 WXH ZT

[复制链接]

1367

主题

1993

帖子

2118

积分

金牌会员

Rank: 6Rank: 6

积分
2118
发表于 2006-7-18 17:34:00 | 显示全部楼层 |阅读模式
作者:tct66

范例:我们假设一个名字为MyGame的MIDlet Suite,由PPJ2me公司提供,版本为1.1.1。其中包括两个MIDlet:MyGame01,MyGame02。那么对应mainifest.mf文件可能是这样的:

mainifest.mf

MIDlet-Name: MyGame

MIDlet-Version: 1.1.1

MIDlet-Vendor: PPJ2me

MIDlet-1: MyGame01, /MyGame01.png, com.PPJ2me.MyGame01

MIDlet-2: MyGame02, /MyGame02.png, com.PPJ2me.MyGame02

MicroEdition-Profile: MIDP-2.0

MicroEdition-Configuration: CLDC-1.1

10.2.4 JAD描述文件
下面谈谈JAD描述文件,虽然某些设备上,JAM并不一定要求有JAD描述文件。尤其在MIDP1.0时,JAD描述文件似乎用处不大。但在MIDP2.0中,JAD描述文件涉及了许多安全方面问题,显得尤为重要。一般而言,在下载JAR文件前,会先下载JAD描述文件,以让设备了解该MIDlet Suite是否适合自己。避免直接下载JAR文件导致大量的成本消耗。这也是设计JAD描述文件的初衷之一。另一个目的就是提供在不更改JAR的前提下修改某些属性值的能力。



JAD描述文件为纯文本文件,文件扩展名为.jad。JAD描述文件和JAR manifest有很多相似的地方,所以部分说明请参见上一节。



如果有JAD描述文件,则JAD描述文件必须提供如下属性:

属性名
说明

MIDlet-Name


MIDlet-Version


MIDlet-Vendor


MIDlet-Jar-URL
下载该MIDlet Suite的URL地址。虽然这里可以使用绝对位置或相对位置,但还是建议用绝对位置。

MIDlet-Jar-Size
JAR文件的大小,计算单位为字节。




如果JAR manifest未提供下列属性,JAD描述文件中则必须提供:

属性名
说明

MIDlet-<n>


MicroEdition-Profile


MicroEdition-Configuration





可选以下属性:

属性名
说明

MIDlet-Description


MIDlet-Icon


MIDlet-Info-URL


MIDlet-Data-Size


MIDlet-Permissions


MIDlet-Permissions-Opt


MIDlet-Push-<n>


MIDlet-Install-Notify


MIDlet-Delete-Notify


MIDlet-Delete-Confirm


应用程序专用的任何属性





对应用程序自己的属性的说明

应用程序可以利用jad来记录自己的专用属性,只要不以“MIDlet-”或“MicroEdition-”开头。这往往非常流行。因为一旦打包成jar,就不方便对其进行修改。而jad是文本文件,方便修改。因此这些属性常用来记录和设备相关的信息或者是网络地址等。这在移植程序时,减轻了很大的工作量。所有属性都可以通过调用MIDlet.getAppProperty方法取得。



范例:我们假设一个名字为MyGame的MIDlet Suite,由PPJ2me公司提供,版本为1.1.1。其中包括两个MIDlet:MyGame01,MyGame02。那么其对应的JAD描述文件可能是这样的:

MyGame.jad

MIDlet-Name: MyGame

MIDlet-Version: 1.1.1

MIDlet-Vendor: PPJ2me

MIDlet-1: MyGame01, /MyGame01.png, com.PPJ2me.MyGame01

MIDlet-2: MyGame02, /MyGame02.png, com.PPJ2me.MyGame02

MicroEdition-Profile: MIDP-2.0

MicroEdition-Configuration: CLDC-1.1

MIDlet-Description: That our sample game.

MIDlet-Jar-URL: http://www.ppj2me.com/game/MyGame.jar

MIDlet-Jar-Size: 7378

MIDlet-Data-Size: 256



10.2.5 JAD 描述文件与JAR manifest的关系
前面介绍JAD描述文件的时候已经介绍了:为什么有了JAR manifest的同时还要有JAD描述文件存在的原因。那么这两者之间还有什么必然的联系吗?



细心的读者可能已经发现,JAD描述文件和JAR manifest中都包括了三个相同的必备属性:

属性名

l         MIDlet-Name

l         MIDlet-Version

l         MIDlet-Vendor



出于安全性考虑,MIDP规范规定,如果JAD描述文件及JAR manifest中这三个必备属性有任何不同的话,JAM是不会安装该MIDlet Suite的。



在调用MIDlet.getAppProperty的时候:对于不可信任的MIDlet  Suite,JAD描述文件的属性会覆盖JAR manifest中的属性。对于可信任的MIDlet Suite,两者必须相同。(有关于可信任及不可信任MIDlet Suite的概念,在上章中有详细说明)。





10.3       OTA(over-the-air)
10.3.1 OTA的介绍
虽然现在MIDP设备大部分都预装了几个MIDP Suite,但对于用户而言,总是希望得到最新的、最实用的MIDP Suite。这就要求MIDP设备提供下载机制。以前最可行的方法就是利用与电脑的串行电缆联接,从电脑上下载MIDP Suite。但现在最流行的方式就是OTA方式。用户可以在任何无线网络覆盖的地方下载自己喜欢的MIDP Suite,这些MIDP Suite存放在支持OTA方式的许多服务器上。



MIDP2.0中规定,OTA下载的规范是HTTP协议的。例如MIDP设备上的WWW、WAP或i-Mode都是基于HTTP协议的。因为像WAP这种协议可能不是基于IP的,在MIDP设备与服务器中间需要中转站等转接设备,为了方便我们进一步讲解,我们将忽略这些中转站的存在,而把OTA看作是MIDP设备与服务器之间的直接联系。



10.3.2 OTA安装
一个典型的OTA安装请求,包括如下步骤:



1)用户在下载MIDP Suite时,首先要给MIDP设备一个URL地址,以确定使用哪台服务器及服务器的哪个MIDlet文件。第(1)项和第(2)项可能不是必须执行的,如果用户指定的URL是一个JAR文件,则直接进行第(3)项。如果URL指定的是一个JAD描述文件,则MIDP设备向服务器发出下载JAD描述文件的请求。



2)服务将返回所请求的JAD描述文件。在成功收到JAD描述文件后,MIDP设备将检验JAD描述的安全及规格,检查设备是否能正确运行该MIDP Suite。这种做法保证了在试图传输较大的JAR文件前,先确定设备拥有运行MIDP Suite所需要的适当能力及资源。



3)如果用户所指定的URL指向了一个JAR文件,或第(2)项检查成功,则MIDP设备将向服务发出下载JAR文件的请求。



4)服务器将返回所请求的JAR文件。下载成功后,MIDP Suite将被安装。



5)在可能的情况下,MIDP设备向服务发送一条安装状态的通知,通知该MIDP Suite是否安装成功。即使在MIDP设备无法向服务器发出通知的情况下,该MIDP Suite仍然可以正常运行。



10.3.3 更新MIDP Suite
当某个MIDP Suite产生更高的版本时,用户往往会尝试更新。更新是不会被自动运行的,需要用户再重复一遍上节所介绍的安装步骤,值得注意的是:不管第二次下载的版本号是否与设备上已有MIDP Suite版本号相同,甚至是比原有版本更低,设备都会为将其视为MIDP Suite的升级。但不论什么情况,JAM都会通知用户要安装的MIDP Suite是比现有的高、相同或低,然后经用户确认后继续。具体还要参考JAM的实现。



在更新的过程中,原有MIDP Suite的RMS存储记录是否被更新后的MIDP Suite所用,按照如下规则进行:

1)  如果新MIDP Suite的加密签名(详见安全章节)与原来的相同,则RMS存储记录将被保留给新MIDP Suite所用。

2)  如果新MIDP Suite的JAR文件manifest中URL、主机和路径与原有的相同,则RMS存储记录将被保留给新MIDP Suite所用。

3)  如果新MIDP Suite的JAD文件中URL、主机和路径与原有的相同,则RMS存储记录将被保留给新MIDP Suite所用。

4)  如果上述条件没有一条满足,则JAM将向用户询问,RMS是否为新MIDP Suite所用。



10.3.4 MIDP Suite的删除
如果用户从设备上删除MIDP Suite,用户一般情况下会被JAM询问是否确定删除。在此同时,如果JAR中manifest或JAD文件中包含了MIDlet-Delete-Confirm属性,则该属性所定义的内容,也将同时被包括进删除的提示信息内。因此,在该属性内,应同时向用户提示诸如MIDP Suite中所有MIDlet及RMS都将被删除的信息。



10.3.5 MIDP Suite安装和删除报告
在MIDlet Suite安装和删除时,MIDlet Suite会尝试向当初下载该MIDlet Suite的服务器进行报告。这就会用到JAR中manifest或JAD描述文件的MIDlet-Install-Notify和MIDlet-Delete-Notify属性。由于这两个属性是可选的,因此,MIDlet Suite正确向服务器发送状况也不是必须的。也就是说,不论安装或删除状况是否正确向服务器报送,该MIDlet Suite的安装及删除也会顺利进行。



安装:在MIDlet Suite安装时,该状态报告发往MIDlet-Install-Notify中所指定的URL(注意:不论是安装不删除状况的发送,其发送的都是POST请求,该请求的第一行将包括一个有效的代码,详见下表)。如果状况报告无法正确向服务器报告,在该设备的网络连通时,MIDlet Suite将再次向服务器报告。



删除:在MIDlet Suite删除时,该状态报告发往MIDlet-Delete-Notify中所指定的URL。删除状况不会被立即报告,而是在下次发送安装状况时向服务器报告。如果状况报告无法正确向服务器报告,在该设备的网络连通时,MIDlet Suite将再次向服务器报告。



POST代码
代表消息

900
成功

901
内存不足

902
用户取消

903
服务丢失

904
JAR大小不匹配

905
属性不匹配

906
无效的JAD

907
无效的JAR

908
不兼容的configuration或profile

909
验证失败

910
授权失败

911
Push注册失败

912
删除通知

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 23:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表