3


创建混淆器插件

通过 Sun Java Wireless Toolkit for CLDC,您可以使用字节码混淆器来减小 MIDlet 套件 JAR 文件的大小。该工具包支持 ProGuard,如《Sun Java Wireless Toolkit for CLDC 用户指南》所述。

如果您希望使用不同的混淆器,还可以为 Sun Java Wireless Toolkit for CLDC 编写一个插件。


3.1 编写插件

混淆器插件扩展了 com.sun.kvem.environment.Obfuscator 接口。该接口本身包含在 toolkit\wtklib\kenv.zip 中。

Obfuscator 接口包含两个您必须实现的方法:

要对您的混淆器插件进行编译,请确保将 kenv.zip 添加到您的 CLASSPATH 中。

例如,下面有一个非常简单的插件的源代码。该插件实际上并没有调用某个混淆器,但它说明了实现 Obfuscator 接口的方法。


import java.io.*;
public class NullObfuscator
    implements com.sun.kvem.environment.Obfuscator {
  public void createScriptFile(File jadFilename, File projectDir) {
    System.out.println("NullObfuscator: createScriptFile()");
  }
 
  public void run(File jarFileObfuscated, String wtkBinDir,
    String wtkLibDir, String jarFilename, String projectDir,
    String classPath, String emptyAPI) throws IOException {
      System.out.println("NullObfuscator: run()");
    }
}

 

假设您将这段代码保存为 toolkit\wtklib\test\NullObfuscator.java。然后您就可以在命令行中对其进行如下编译:

set classpath=%classpath%;toolkit\wtklib\kenv.zip
javac NullObfuscator.java


3.2 配置工具包

编写完混淆器插件之后,您必须向工具包指明该插件所在的位置。要这样做,则需要编辑 toolkit\wtklib\Windows\ktools.properties。编辑该混淆器插件的类名,并向工具包指明该类所在的位置。如果您要照着示例一起做,请按如下方法编辑属性:

obfuscator.runner.class.name: NullObfuscator
obfuscator.runner.classpath: wtklib\\test

重新启动工具包并打开一个项目。现在选择“项目”>“包”>“产生混淆包”。控制台将按照如下所示显示 NullObfuscator 的输出:

Project settings saved
Building "Tiny"
NullObfuscator: createScriptFile()
NullObfuscator: run()
Wrote C: \WTK252\apps\Tiny\bin\Tiny.jar
Wrote C: \WTK252\apps\Tiny\bin\Tiny.jad
Build complete