12月13日 |
关于移动游戏百宝箱打包上传问题。 |
声明:这是一个说明文档,而且是个人见解,仅供参考,不详细之处请多多谅解 :)。 lulei 2005-12-6
由于移动本身平台设计的问题,导致许多打包的应用无法上传到移动的平台。为了能够让我们的程序上传移动的平台,需要做以下处理。(方法共3种,前2种已经被我们实际验证过,是可行的。据说第3种也是可以的,我们选择自己喜欢的就可以了。)
与我们打包息息相关的、已知的移动测试流程: 移动把SP提交的程序文件会通过下面这个平台来测试和发布。 http://sp.mbox.monternet.com 问题也就多出在这个地方。例如:程序Midlet.jar和Midlet.jad(我们提交给移动的jad文件是UTF-8的) 1.移动首先把Midlet.jad首先转换成ASCII码; 2.然后把Midlet.jar和转换后的Midlet.jad上传到平台上; 3.看看适配机型有没有勾上,jad描述是否正确; 然后再做一些他们需要做测试,与我们有关的就是这3个步骤。
如果我们没有按照移动要求打包的话,这里他们就会遇到下面的问题: 不能提交应用,上传时平台提示:“应用和已知的JAVA 特征不匹配,不能被上传”
(这个就是我们没有按照移动要求打包而出现的问题。我们按移动要求打包之后,为了确保程序可以上传,做到心中有数,所以在给移动发程序之前,我们必须上传测试一下程序是否可以上传。)这时候又遇到转换ASCII的问题。
移动给出了转换ASCII码的方法 7. JAD乱码是怎么产生的? 答:由于UTF-8编码的JAD文件在上传至平台时会表现为乱码,因此在上传前需用ultraedit(ultraedit的“高级”/“配置”中将“自动检测UTF-8文件”勾选掉)手工进行“文件->转换->UTF-8转ASCII”的转换步骤,转换后含有乱码字符的JAD文件可能导致无法上传或用手机下载时会看到乱码,因此无法完成后续测试。
部分SP提交的JAD中总出现某项前面有乱码的情况, 是因为在UltraEdit里设置了UTF-8文件头标记的后果,即在“高级”/“配置”中勾选了“保存是对所有UTF-8写入UTF-8文件头标记(ROM)-(OFF)”,应该勾选掉。 (给出我对这段话的理解,由于移动平台的原因,必须把UTF-8编码的jad文件转换成ASCII码才可以上传到该平台,我们就按照移动的方法把它转成ASCII码就可以了,确保我们转换后的ASCII码文件可以正常显示,没有乱码!注意:我们发给移动的文件仍然是UTF-8格式的jad文件,也就是没有转换之前的,这里转换只是用来上传平台用的。如果你不转换就上传到该平台就可能会出现“JAD中缺少应有的项:MIDlet-Vendor、MIDlet-Version”这个错误提示。即使你的jad是不缺项的!)
这个时候我们的程序应该可以正常上传了。然后看看适配机型有没有被勾上。如果没有被勾上,那就是选用sdk或者CLDC和MIDP版本的问题,不是打包的问题了。
按照移动正确打包: 方法1. 用Eclipse直接打包。
所需软件: Eclipse v3.1.1 EclipseME v1.2.1 这个版本的EclipseME: Fix for UTF8 JAD problems during packaging (Bug 1283295) 所以可以直接打包。第2种方法就是因为以前版本的EclipseME有这个Bug,所以多做了一些步骤。
Eclipse设置: 编译时,设置javac 的target vm为1.1即可通过移动检测。wtk中无法实现。在Eclipse中可以在java-compiler-Compliance and Classfiles中做以下设置:
方法2:用Eclipse间接打包。如果用EclipseME以前版本的话,可以用下面方法。
Eclipse设置: 1 编译时,设置javac 的target vm为1.1即可通过移动检测。wtk中无法实现。在Eclipse中可以在java-compiler-Compliance and Classfiles中做以下设置:
2 用eclispe打混淆包。但eclipse编写jad中文会出现乱码,所以用wtk编写正确的jad,然后用wtk打包(注意不能覆盖eclispe打的包),这是为了用wtk获得正确的jad和manifest文件。将elcipse打包出的jar解压,用wtk生成的mainifest代替原jar中的mainifest文件,然后用winrar打包(zip格式,可选最大压缩,注意要选择所有的文件后打包,不要将外面的整个目录打包).最后将jad中的jar size改为这个最新的jar的字节数。
方法3:WTK打包 j2sdk1.3.1国际版 wtk1.0.3或者wtk1.0.4 对于sun不支持的扩展API,需要SP扩充,方法是:将扩展API加到D:/WTK1.0.4/lib/midpapi.zip |