由于java是解释性语言,生成的class文件很容易被反编译,所以一般J2ME程序制作出来后的jar包,都要经过混淆处理。今天使用到了最常见的proguard来进行混淆和压缩处理。
本人使用的是Myeclipse加Eclipseme插件进行J2me开发的,其自身就带有对proguard的支持,下载proguard 4.3到本机,并解压。
在Eclipse中配置proguard进行混淆编译,如下:
1、选择Eclipse的窗口菜单中的首选项。
2、打开左边面板的J2ME选项分支,选择打包(Packaging)子项,然后点击混淆(Obfuscation)。
3、配置ProGuard的根目录(在对话框顶部)。
4、在下面按照你的需要配置ProGuard选项。更多关于ProGuard的信息,请参见 ProGuard的SourceForge站点。
Microsoft Windows用户请注意: 默认情况下,ProGuard假定你使用的的操作系统能够区分两个只是大小写不同的文件名的(比如,A.java和a.java被认为是两个不同的文件)。显然Microsoft Windows不是这样的操作系统(Windows是对文件名是大小写不敏感的)。因此Windows用户必须为ProGurad指定-dontusemixedcaseclassnames选项。如果你不这么做并且你的项目中有超过26个类的话,那么ProGuard就会默认混用大小写文件名,而导致class文件相互覆盖。安全起见,从0.9.0版本开始,EclipseME默认为ProGuard设置 -dontusemixedcaseclassnames选项。项目中有很多类的UNIX用户可以删除这个选项,这样最终产生的JAR文件的大小可以进一步缩小。
5、设置的窗口应该是这样:
6、之后,在项目上右键,找到如下选项进行混淆编译:
在deploy文件夹内我们可以看到生成的项目jar文件和一些proguard产生的其他文件,解开jar包可看见除MIDlet类其他的都被混淆成a、b、c、d等类。并且jar包文件明显缩小了尺寸。