你的,也是我的——DIY属于自己的Java软件

手机帮

前几天,小编的一位邻居MM找到小编,要小编为她推荐一款屏幕大、Java性能强、Java软件资源丰富的智能手机。小编感到奇怪的是,邻居MM的索爱W810c又不落伍,干嘛要换新机?弄了半天才知道,原来MM很多喜欢的Java游戏、软件都没有W810c专用的版本,放到手机上无法正常运行。为了帮助郁闷中的MM,小编决定展示一下自己丰富的专业知识,给她DIY几个只属于她一个人的Java软件。

Java软件不能通用主要是因为各个手机之间存在着硬件差异,手机上按键的数量和每个按键的键值都不一样。举个例子来说,诺基亚5300和摩托罗拉E2这两款手机在娱乐性上差距并不大,也就是说在5300上能正常运行的Java软件,在E2上硬件同样支持。但是,由于这两款手机在键位及键值上的不同,5300支持的Java软件,E2是无法直接使用的。

改键,操作方式自己定

对于初级用户来说,笔者向大家推荐一款用于PC端的软件——《JavaMagic》(本文所有软件统一下载链接:http://www.cpcw.com/bzsoft)。它是一款Java软件修改工具,功能强大、操作简单,这里我们只使用它的改键功能。在修改以前,大家要弄清楚要修改的Java软件是针对哪一款手机开发的,同时还要清楚自己手机的所有按键键值,如果不知道,则可以将《Keytest》安装到手机上运行测出。

1.运行《JavaMagic》,在“设置”中的“KeyCode”选项卡中,将“启用键码转换功能”勾选,然后点选“不改变OK键定义”。接着进入“键码设置”(如图1),在左半部分各个按键下的文字输入框中,填入你手机上该按键对应的键值(不能重复),然后在右半部分填入你要改键的程序所对应机型的该按键键值。因为数字键区的按键键值基本上都是一样的,所以我们只需要更改左右软键、方向键和OK键即可。都改好后按“确认”回到软件起始界面,打开你要改键的Java软件,稍等片刻软件就会生成一个新的Java软件,将它拷贝到手机上就OK了。

45-c13-2.jpg
图1

小提示:利用此方法,我们还可以将一些必须使用大量摇杆操作,却又不能更改按键的Java软件进行修改,这样可以有效减少摇杆的使用频率。

2.《JavaMagic》虽然用起来很简单,但有些Java软件是无法通过它更改按键的,这时我们就要自己动手了。因为手机上的Java软件都是通过“Zip”格式压缩的,所以我们可以用《WinRAR》解压Java软件,解压后我们可以得到很多“.class”后缀的文件,再用《Java反编译软件》对这些文件进行批量反编译即可。在生成的“.java”文件中,我们可以用《EmEdit》对Java软件中要更改的按键键值进行多文件查找,在查找结果中筛选包含“keyPressed”、“keyRepeated”及“keyReleased”的文件。记住这些语句的所在行数及文件名,用《Hex Workshop》打开其所在的class文件,调出“查找”窗口,在“类型”中选择“16位区分正负简短”,在“数值”中填上要替换的按键键值,并在“选项”中的“查找所有实例”前打钩。

最后,在找到的选项中的大致位置,筛选我们要更改的键值,并将我们要在手机上替换该按键键值的大Endian字节次序的十六进制代码,在左边进行替换(如图2),大Endian字节次序的十六进制代码可以在“查找”窗口的“数值”中填上其键值后,在“十六进制”栏得到。保存文件后,再用《Java反编译软件》对该文件进行反编译,如果更改成功,那么我们要改的位置显示的则是替换后的新键值,如果不是,则要继续筛选、重新更改直到成功。成功修改好所有的“.class”文件后,将这些文件替换原文件即可。方法是用《WinRAR》打开Java软件,将改好的“.class”文件“拖进去”,最后,将改好的Java文件安装到手机就OK了。

45-c13-3.jpg
图2

改分辨率,屏幕大小没关系

对于很多Java软件,特别是游戏来说,往往存在画面分辨率不统一的问题,手机有很多分辨率不同的屏幕类型,用高分辨率的手机玩低分辨率的游戏无法全屏显示,而用低分辨率的手机玩高分辨率的游戏又显示不完整。如果我们学会了更改Java软件的分辨率,像索爱W800c这种Java性能较强,但屏幕较弱的手机,就可以“通吃”Q屏(QVGA)游戏了。

例如我们要更改《飞信》这款Java软件的分辨率,如果只是将分辨率的数值进行更改,运行时可能会发生菜单栏显示错误,原因是其菜单栏是在背景图的基础上,用点阵数绘制的对象,而不同于《QQ》的相对点阵绘制法。所以,面对这样的Java软件,我们只能不停地尝试,不停地修改直到成功,没有捷径。具体的修改方法与改键是完全一样的,区别在于替换的数值由键值变成了分辨率值,大家可以举一反三进行修改。

小提示:如果改键时用的《JavaMagic》,而改分辨率用的改“.class”文件的方法,那么就还要用《JavaMagic》再设定一下软件运行时的分辨率(在“设置”的“Screen”选项卡中进行设置),且两者必须保持一致。

个性化,我的软件独一无二

本来更改好按键和分辨率后,我们就可以开始享受Java游戏和软件了,但是,如果能在Java软件中“烙上”自己的印记岂不是更爽?当然,“烙印”也有两种方法,文字记号和图片记号,笔者在这里也将一一为大家讲解。

1.文字记号

如果要更改手机端显示的软件名称,我们需要更改Java软件“META-INF”目录下的“MANIFEST.MF”文件。用《WinRAR》打开Java文件(JAD或JAR),找到“META-INF”文件夹,将“MANIFEST.MF”文件提取出来,用《EmEdit》打开该文件(笔者以《Opera》为例),文档的显示内容如下:

Manifest-Version: 1.0

MIDlet-Name: Opera

MIDlet-1: Opera, /i.png, Browser

MIDlet-Data-Size: 25600

MicroEdition-Configuration: CLDC-1.0

MIDlet-Icon: /i.png

MIDlet-Info-URL: http://mini.opera.com/

MIDlet-Install-Notify: http://mini.opera.com/n/8718Akongzhongota_cn

MIDlet-Vendor: Opera Software ASA

MIDlet-Version: 3.1

MicroEdition-Profile: MIDP-2.0

MIDlet-Description: Opera Mini

大家可以看到,“MIDlet-Name:”和“MIDlet-1:”后面显示的,就是Java软件安装后显示的名字,将它更改成自己想要的就OK了(注意要在“:”后空一格)。

2.图片记号

我们再以《QQ2007》为例,“/i.png”就是图标文件的名称和位置,“/”表示根目录,对于没有图标的Java软件我们也可以自己添加。图标文件必须是“PNG”格式的,像素最好别超过36×36。修改完成后保存修改好的“MANIFEST.MF”文件,点击“另存为”,然后在“编码”中选择“UTF-8”,去掉“添加Unicode的签名(G)(BOM)”前的钩。最后,将改好的“MANIFEST.MF”文件直接拖到用《WinRAR》打开的Java软件里覆盖即可(如图3,但不要侵犯、修改版权)。

45-c13-4.jpg
图3

小提示:除了改名字、换图片,我们也可以在Java软件中留下特殊的记号,方法与改键相同,区别还是在于查找、替换的内容上。因为我们要替换的是文本,所以在“替换”窗口中进行替换时,“类型”要选择“文本字串”。在“查找”中填上要替换的文字,“替换”中填上自己想要更改的内容,注意两者在文字的字数上要完全一致,如果“替换”中的字数不够,就在“用空格填充”前打钩。接着,勾选“选项”中的“ASCII字符串”(只能替换英文字符,中文的要用“Unicode字符串”,两者不能混用),最后点击“确定”逐个替换即可。

编后:通过上述方法,我们可以DIY大多数Java软件,以后,你不用再为喜欢的Java软件没有你所使用手机的版本而发愁了。不过需要注意的是,并不是所有支持Java的手机,都能够正常使用经过修改的软件。我们可以掌握一个“笨办法”来判断,那就是如果该软件所支持的手机Java性能小于等于你所使用的手机,那么理论上通过修改都能良好支持。