第三节:META-INF/MANIFEST.MF文件的书写及JAD的生成。 对于这一节的内容,其实我犹豫了好久的,我在想要不要和大家讲,因为我们论坛以前有人曾经从别的网站转摘过。犹豫再三,我决定还是给大家再讲一遍,虽然冒着拾人牙惠的恶名,也在所不惜了,因为我要讲jar,就不能不讲它,否则就不完整。 JAD是Java 应用程序描述,它包含 MIDlet 套件的标题信息,例如开发应用程序的公司、应用程序名称和大小。在将应用程序下载到设备上时,将先下载和读取描述符,然后再下载和读取包含 MIDP 应用程序的 JAR 文件。在装入 MIDlet 套件的完整 JAR 文件之前,移动设备上的应用程序管理软件可使用 JAD 文件验证 MIDlet 是否适用于该设备。JAD 还向 MIDlet 提供特定于配置的属性(参数),而无需修改 JAR 文件。这样设备便可以确认是否具有足够的空间用于存放应用程序,以及是否应下载完整的应用程序。 先解释MIDP和Midlet。MIDP (Mobile Information Device Profile)移动信息设备简表,提供一种标准的运行时环境,允许在终端用户设备上动态地配置新的应用程序和服务。换个方式说,MIDP就是是移动信息设备的描述,是一套Java应用编程接口(Application Programmer's Interfaces(APIs))。它们与有限连接设备配置(Connected Limited Device Configuration,CLDC)一起向诸如蜂窝电话等移动信息设备提供了一个完整的Java应用运行环境。MIDP中含有下列API包:javax.microedition.lcdui--用户界面(UI)API,它为MIDP应用提供了一整套实现用户界面的功能特性;javax.microediton.rms--移动信息设备描述提供了一种让MIDlets{yj}储存并在以后可以取回数据的机制。javax.microedition.midlet--这个MIDlet包明确定义了MIDP应用,也定义了和应用环境之间的交互。javax.microedition.io--移动信息设备还描述包括基于有限连接设备配置GenericConnection框架的网络支持。 MIDP是向下兼容的,即MIDP2.0的手机能玩MIDP1.0的游戏。 MIDP1.0有容量限制,软件不能超过64K。 MIDlet是遵照MIDP编写的java应用程序,它仅利用MIDP 和CLDC 规范所定义的各.种API。该应用必须继承MIDlet 类以便让应用管理软件来控制这个MIDlet从应用描述器中获.取各种属性,以及对各种状态变化进行通知和请求。或者可以说,MIDlet是定位于提供某种水平的网络连接性的移动设备。运 行MIDlet的设备也有好几个共同的属性:有限的屏幕大小,内存和处理能力,这个规范是设计来满足这些需求,典型的设备包含行动电话和呼叫器。 MIDlet仅仅是对移动软件设置在运行上的一种应用称呼,与它相对应的还有在服务器端的servlet和在客户端的applet,那么在手机端就是midlet。在此大家仅作了解就可以了,下面继续讲JAD。 Java 文件的扩展名为. jad。 JAD是软件配置信息文件,JAR才是真正的程序,你可以把两个文件放在一起安装JAD,也可以直接安装JAR文件。 JAD 文件为纯文本格式,可用记事本打开。一个 JAD 文件至少需要包含包含如下属性: MIDlet-Name: 向用户标识 MIDlet 的 MIDlet 套件名称,即MIDlet程序包的名称。 MIDlet-Version:MIDlet 套件的版本号。应用程序管理软件使用该版本号执行安装操作和升级,以及与用户进行通信。 MIDlet-Vendor: 提供 MIDlet 套件的组织。根据项目配置所支持的 MIDP 版本,还可以使用其他属性(MIDlet的创建者或提供商等) MIDlet-JAR-URL:此 MIDlet 套件的 JAR 文件的位置和名称,即JAR文件的URL。 MIDlet-JAR-Size:通过此 MIDlet 套件生成的 JAR 文件的大小。每次生成 JAR 文件后,都会更新此只读属性。 MicroEdition-Profile:所需的 Java ME 配置文件,它使用与系统属性 microedition.profiles 相同的格式和值(例如 MIDP-1.0)。 MicroEdition-Configuration:所需的 Java ME 配置,它使用与系统属性 microedition.configuration 相同的格式和值(例如 CLDC-1.0)。 MIDlet-Description:MIDlet 套件的描述。 MIDlet-Icon: JAR 文件内的 PNG 文件名,用于表示 MIDlet 套件。应用程序管理软件显示了标识此套件的图标,(就是我们在手机上看到的软件名字前的图标)。 MIDlet-Info-URL:一个 URL,提供进一步描述 MIDlet 套件的信息(服务商或供应商的信息)。 MIDlet-Data-Size:MIDlet 所需的持久性数据的最少字节数。设备可以根据其自身的 策略提供额外的存储。 Background: True 以下这三个是使用程序后台运行的控制命令.,当我们使用的某一款联网软件没有此功能时,我们可以打开 JAD手动添加,然后执行安装. FlipInsensitive: True MIDxlet-Resident: Y 在JAVA程序中,并非必不可少,有些软件是不需要JAD文件的。但是有好多手机因为自身的原因,是必须JAD文件来安装的。另外在以上JAD文件的信息中,有些是可有可无的,有些则是必须要有的,否则手机将无法加载这个游戏,下面这些便是必不可少的部分: MIDlet-Version MIDlet-Name MIDlet-Vendor MIDlet-1 MIDlet-Jar-URL MIDlet-Jar-Size 在以上面这属性当中,还有一些必须注意的问题: 1。属性MIDlet-Name、MIDlet-Version和MIDlet-Vendor既在JAR中的清单文件中又在JAD文件中,这些属性的值都必须xx相同。 2。属性MIDlet-Data-Size在JAR文件和JAD文件中都有,当两个文件中都定义了这个属性的时候,程序运行时JAD文件中的属性将使用。 3。MIDlet-1这个属性不是必须的,但是没有这个属性,在模拟器中将没有办法使用这 个程序!因此,如果你的手机程序无法在模拟器中使用的话,也许就是因为没有它在场,你可以手动添加。 此外,JAD还是一个简单易用的反编译工具,可以将二进制字节码文件转换成java源文件。 在众多的JAVA反编译工具中,有几种非常xx的工具使用了相同的核心引擎——JAD,其中主要包括:Front End Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java Decompiler、NMI’s Java Class Viewer和国产的JAVA源代码反编译专家等等。 JAD本身是一个命令行工具,没有图形界面,上述的这些工具大多是在JAD内核的基础之上加了一个图形界面而已。这么多种产品的共同选择,足可证明JAD在JAVA反编译领域中的尊贵地位。 manifest.mf文件。 首先我们看一张图片,来自道道通公司的手游<梦想>. 通过上一节的打包我们已经看到,这个文件是系统自动生成的,但是生成的信息并不全面,没有我们平常所看到的内容。下面我再扼要讲一下有关它的内容.。 manifest.mf文件所有可能的信息如下: MIDlet-Name : MIDlet-Version : MIDlet-Vendor : MIDlet-Icon : MIDlet-Description : MIDlet-Info-URL : MIDlet-1 这个属性包括三段信息: MIDlet名称; 用于这个MIDlet的图标(可选); 应用程序,管理器将调用来加载这个MIDlet的类名; MIDlet-Jar-URL : MIDlet-Jar-Size :JAR文件的大小 MIDlet-Data-Size :持久数据存储必需的最小字节数 MicroEdition-Profile :MIDlet需要哪一种J2ME简表 MicroEdition-Configuration :MIDlet需要哪一种J2ME配置。 我们看到,它的内容和上面我们说过的JAD的内容大同小异,而其实,在某一个特定的情况下,这前者也确实代替后者。 同样,对于上面这些属性MF也并不是全部都需要的,但是,下面列出的这六个是必须的,否则应用程序管理器就会拒绝加载这个JAR。 MIDlet-Version MIDlet-Name MIDlet-Vendor MIDlet- MicroEdition-Profile MicroEdition-Configuration 下面还要说明的两点: 1、除了这些属性以外,如果JAD同MF两个文件中的其它名称相同的属性,但是属性值不相同的,安装时将优先采取应用程序描述器文件(JAD)属性! 2、JAD里可能有证书签名,但MF里没有。下面我们看对mobilepdf软件中MF和JAD的比较(看图) 本文由UC论坛索区mxl1983413[歸零]提供,欢迎转载,转载时请注明作者、出处。谢谢。 |