如何通过改jad和Manifest把其它手机的java游戏改成N830的
首先要明确一点,不是所有的游戏都能改的。 <2006-02-01><技术资料> 今天先发个技术资料,看懂这个技术资料就不用继续看了;不懂也没关系,我会慢慢讲解的,不过就要等一段时间了,我写得很慢得。。。 觉得有用就帮忙顶上。 以下摘抄自官方网站的N830 JavaSpec V1 (CH) 5.JAD(ADF)文件 表1JAD属性 属性名: MicroEdition-Profile 6.Manifest文件 _________________________________________________________________________ <改JAD文件> 如有一个JAD文件的内容如下: 我一行一行解释。 MIDlet suite里面包含的各MIDlet的名称、类 (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文件),一般不需修改 价格啦。。。。我讨厌收费的!! [改]随便改啦,我喜欢改成0(一般,对应的Manifest文件不会有这一项),一般很多其它手机的java程序的JAD都是缺这一行,加上去就好了。 最后两个一起说啦,CLDC版本和MIDP的版本 综上,一般只需要在JAD文件中加上MIDlet-Description和Media-price两个属性。 _________________________________________________________________________ Manifest文件 Manifest文件必有属性: MIDlet-Name MIDlet-Description属性,在N830的java规范中,指定Manifest中是必须的,但是实践证明,这个属性可以不包涵在Manifest中!! 这些属性和JAD文件中的一样,就不多说了。只要记得属性值和JAD中的保持一致就好了。
文字编码用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文件)中已与预约的属性名不能设置成任意属性。
属性名: 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登录,使用应用时
内容: 应用程序的描述
!《必须》!
属性值: 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 无论哪个定义的属性,当做任意属性时不能识别。
文字编码用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文件中必须有如下属性:
MIDlet-<n>
MIDlet-Name
MIDlet-Version
MIDlet-Vendor
MIDlet-Jar-URL
MIDlet-Jar-Size
MIDlet-Description
MicroEdition-Profile
MicroEdition-Configuration
Media-price
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的名称(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.0版本,不用想了,玩不了的,N830是1.0的。。
(8)Media-price: 0
(9)MicroEdition-Configuration: CLDC-1.0
(10)MicroEdition-Profile: MIDP-1.0
MIDlet-Version
MIDlet-Vendor
MIDlet-<n>
MicroEdition-Profile
MicroEdition-Configuration
接下去就是实际动手修改了。
(1)只想改jad和manifest的,可以只安装WinRAR。
(2)想更进一步了解原理,进行修改的,建议继续安装 JDK1.5 , N830 SDK , WinHex
(3)再进一步就要涉及到修改游戏的class文件了,建议继续安装java反编译软件,nokia的com包支持库,索爱的支持库。
今天先到这里,有空就开始写实例教程了。
下一篇: python实现字符串逆序输出