欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

如何通过改jad和Manifest把其它手机的java游戏改成N830的

程序员文章站 2022-03-09 21:09:03
...

首先要明确一点,不是所有的游戏都能改的。

<2006-02-01><技术资料>

今天先发个技术资料,看懂这个技术资料就不用继续看了;不懂也没关系,我会慢慢讲解的,不过就要等一段时间了,我写得很慢得。。。

觉得有用就帮忙顶上。

以下摘抄自官方网站的N830 JavaSpec V1 (CH)

5.JAD(ADF)文件 
文字编码用UTF-8。另外下面JAD和ADF两者使用时,视为同一来表示。 
有关JAD(ADF)文件的注意事项。 
$ JAD(ADF)大小的最大值为2Kbyte 
$ MIDlet-Jar-Size的最大值为256Kbyte 
$ JAD(ADF)的记述Syntax遵循MIDP1.0。 
$ 属性名有大小写区别。 
$ 表1中规定的【必选】属性必须要设置。 
$ 同一属性名不能重复2次以上。 
$ 属性值请遵循表1的Format。属性值不能省略。 
$ 使用RMS时,MIDlet-Data-Size必须设置适当的值。(能够Manifest指定) 
$ MIDlet通信时,需要将MIDlet-UseNetwork设置为YES。 
$ 表1JAD(ADF)文件和表2(6.Manifest文件)中已与预约的属性名不能设置成任意属性。

表1JAD属性 
属性名: MIDlet-Name
属性值: 用UTF-8最大32byte 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: MIDlet suite标题 
!《必须》!

属性名: MIDlet-Version
属性值: 用UTF-8最大16byte(X.Y.Z格式的字符集 (0.0.0~99.99.99)) 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: MIDlet suite的版本 
!《必须》!

属性名: MIDlet-Vendor
属性值: 用UTF-8最大32byte 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: MIDlet suite的生产厂家名称 
!《必须》!

属性名: MIDlet-Jar-URL
属性值: 用UTF-8,最大255byte的URL(不可使用相对路径) 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时
内容: 下载Jar的URL 
!《必须》!

属性名: MIDlet-Jar-Size
属性值: 最大8byte (0~262144の値) 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: 下载的Jar文件大小 
!《必须》!

属性名: MIDlet-Data-Size
属性值: 用UTF-8,最大8byte (0~10240之间的值) 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: 使用MIDlet Suite时的RMS大小 
对使用RMS的MIDlet Suite,至少JAD(ADF)或Mainifest的一方是必须。
不使用的是《可选》。不指定时取为0。 

属性名: MIDlet-Install-Notify
属性值: 用UTF-8,最大255byte的URL 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: 安装状态报告的发送目标地址URL(http://必须) 
《可选》 

属性名: MIDlet-Description
属性值: 用UTF-8最大512byte 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: 应用程序的描述 
!《必须》!

属性名: MicroEdition-Profile
属性值: MIDP的版本 用UTF-8是8byte 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: 有关指定MIDP-1.0的相关内容: 
!《必须》!

属性名: MicroEdition-Configuration
属性值: CLDC的版本 用UTF-8是8byte 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: 有关指定CLDC-1.0的相关内容: 
!《必须》!

属性名: Media-price 
属性值: 用UTF-8最大32byte 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: 应用程序的价格 
!《必须》!

属性名: MIDlet-UseNetwork 
属性值: 用UTF-8,YES/NO,无大小写区别,最大4byte 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: MIDlet Suite 是否使用网络 
《可选》。MIDlet Suite需要通信时为必须。 
不进行通信时为《可选》项。不指定时与No相同 

属性名: 任意(最大32byte字符集),最多5个 
属性值: 用UTF-8最大127byte 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: 可以作为MIDlet的参数来使用 
《可选》。但是,ADF,Manifest 无论哪个定义的属性,当做任意属性时不能识别。

6.Manifest文件 
文字编码用UTF-8。Manifest文件的相关注意事项。 
$ Manifest的记述Syntax遵循http://java.sun.com/products/jdk/1.2/docs/guide/jar/manifest.html。 
$ 属性名有大小写区别。 
$ 表2中规定的【必选】属性必须要设置。 
$ 同一属性名不能重复2次以上。 
$ 属性值请遵循表2的Format。属性值不能省略。 
$ MIDlet-Name、MIDlet-Version、MIDlet-Vendor的属性值与JAD(ADF)文件中的设定值必须一致。 
$ MIDlet-<n> 以外的属性中Manifest和JAD(ADF)文件同时设定的情况下,JAD(ADF)的属性值优先。MIDlet-<n>
为Manifest优先。 
$ 表1(5.JAD(ADF)文件)和表2(6.Manifest文件)中已预约的属性名不能设置成任意属性。另外,JAD(ADF)文
件中设定的任意属性不能作为Manifest的任意属性。 

表2 Manifest属性 
属性名: MIDlet-Name
属性值: 用UTF-8最大32byte 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: MIDlet suite的标题 
!《必须》!

属性名: MIDlet-Version
属性值: 用UTF-8最大16byte(X.Y.Z格式的字符集 (0.0.0~99.99.99)) 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: MIDlet suite的版本 
!《必须》!

属性名: MIDlet-Vendor
属性值: 用UTF-8最大32byte 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: MIDlet suite的生产厂家名称 
!《必须》!

属性名: MIDlet-<n> 
属性值: MIDlet suite里面包含的各MIDlet的名称、类 
MIDlet的名称(Name) : 用UTF-8最大64byte 
类(Class Name): 用UTF-8で最大128byte 
不支持ICON 
MIDlet-<n>: Name,ICON,Class Name 
或者MIDlet-<n>: Name, ,Class Name 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: MIDlet的标题 
!《必须》!

属性名: MicroEdition-Profile
属性值: MIDP的版本 用UTF-8是8byte 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: 有关指定MIDP-1.0的相关内容: 
!《必须》!

属性名: MicroEdition-Configuration
属性值: CLDC 的版本 用UTF-8是8byte 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: 有关指定CLDC-1.0的相关内容: 
!《必须》!

属性名: MIDlet-Description
属性值: 用UTF-8最大512byte 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: 应用程序的描述 
!《必须》!

属性名: MIDlet-Data-Size
属性值: 用UTF-8,最大8byte (0~10240之间的值) 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: 使用MIDlet Suite时RMS大小 
对使用RMS的MIDlet Suite,至少在JAD(ADF)或Manifest中有一处必须设置。 
不使用的是《可选》。不指定时取为0。 

属性名: 以“MIDlet-“开头的任意属性(最大32byte字符集),最多5个 
属性值: 用UTF-8最大127byte 
值的使用的时间点: 下载MIDlet suite, AP登录,使用应用时 
内容: 可以作为MIDlet的参数来利用 
《可选》。但是,ADF,Manifest 无论哪个定义的属性,当作任意属性时不能识别。

_________________________________________________________________________

<改JAD文件>
JAD文件中必须有如下属性:
MIDlet-<n>
MIDlet-Name
MIDlet-Version
MIDlet-Vendor
MIDlet-Jar-URL
MIDlet-Jar-Size
MIDlet-Description
MicroEdition-Profile
MicroEdition-Configuration
Media-price

如有一个JAD文件的内容如下:
MIDlet-1: JBookMidlet,,JBook.JBookMidlet
MIDlet-Description: N830
MIDlet-Jar-Size: 140517
MIDlet-Jar-URL: JBook.jar
MIDlet-Name: JBook
MIDlet-Vendor: SnailStudio
MIDlet-Version: 1.0
Media-price: 0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-1.0


我一行一行解释。
(1)MIDlet-1: JBookMidlet,,JBook.JBookMidlet


MIDlet suite里面包含的各MIDlet的名称、类 
MIDlet的名称(Name) : 用UTF-8最大64byte 
类(Class Name) 用UTF-8最大128byte 
不支持ICON 
MIDlet-<n>: Name,ICON,Class Name 
或者MIDlet-<n>: Name, ,Class Name



N830一个MIDlet Suite支持5个MIDlet,所以说n的范围是1~5,这里是1(一般都是1)
JBookMidlet是MIDlet的名称,其后有两个逗号,逗号中间应该是图标的文件名,这里没有。最后的JBook.JBookMidlet是JAVA类的名称。
[改]在这里,可以改的是MIDlet的名称(Name),改成你喜欢的名字吧,看起来也爽一些。(注意,Manifest文件中也有这个属性,要改成一样的),一般这里不会有问题的,不建议更改。


(2)MIDlet-Description: N830


应用程序的描述


[改]随便改吧(注意,如果Manifest文件中有这一项,也要改Manifest文件),一般很多其它手机的java程序的JAD都是缺这一行,加上去就好了。


(3)MIDlet-Jar-Size: 140517


Jar文件的大小,字节表示


[改]大小不对的时候再改吧,一般不需要改


(4)MIDlet-Jar-URL: JBook.jar


Jar文件的名称


[改]对应jad的jar文件名称,名称不对时再改吧,一般不需修改


(5)MIDlet-Name: JBook


MIDlet的标题


[改]可以改成喜欢的名称(注意改对应的Manifest文件),一般不需修改


(6)MIDlet-Vendor: SnailStudio


MIDlet Suite厂商的名称


[改]可以改成喜欢的名称(自己的公司?呵呵。但是要注意改对应的Manifest文件),一般不需修改


(7)MIDlet-Version: 1.0


MIDlet Suite的版本号,范围从0.0.0~99.99.99


[改]范围以内都可以,(注意改对应的Manifest文件),一般不需修改


[改]还想改??不能改啦,如果是2.0版本,不用想了,玩不了的,N830是1.0的。。


(8)Media-price: 0


价格啦。。。。我讨厌收费的!!


[改]随便改啦,我喜欢改成0(一般,对应的Manifest文件不会有这一项),一般很多其它手机的java程序的JAD都是缺这一行,加上去就好了。



(9)MicroEdition-Configuration: CLDC-1.0
(10)MicroEdition-Profile: MIDP-1.0


最后两个一起说啦,CLDC版本和MIDP的版本


 



综上,一般只需要在JAD文件中加上MIDlet-DescriptionMedia-price两个属性。

_________________________________________________________________________

Manifest文件

Manifest文件必有属性:


MIDlet-Name
MIDlet-Version
MIDlet-Vendor
MIDlet-<n>
MicroEdition-Profile
MicroEdition-Configuration


MIDlet-Description属性,在N830的java规范中,指定Manifest中是必须的,但是实践证明,这个属性可以不包涵在Manifest中!!


这些属性和JAD文件中的一样,就不多说了。只要记得属性值和JAD中的保持一致就好了。


接下去就是实际动手修改了。
(1)只想改jad和manifest的,可以只安装WinRAR。
(2)想更进一步了解原理,进行修改的,建议继续安装 JDK1.5 , N830 SDK , WinHex
(3)再进一步就要涉及到修改游戏的class文件了,建议继续安装java反编译软件,nokia的com包支持库,索爱的支持库。

今天先到这里,有空就开始写实例教程了。