第3章


難読化ツールのプラグインの作成

Sun Java Wireless Toolkit for CLDC では、バイトコードの難読化ツールを使用して MIDlet スイートの JAR ファイルのサイズを小さくできます。『Sun Java Wireless Toolkit for CLDC ユーザーズガイド』に説明されているように、このツールキットでは ProGuard がサポートされています。

別の難読化ツールを使用する場合は、Sun Java Wireless Toolkit for CLDC のプラグインを作成できます。


3.1 プラグインの作成

難読化ツールのプラグインによって、com.sun.kvem.environment.Obfuscator インタフェースが拡張されます。インタフェース自体は、toolkit¥wtklib¥kenv.zip に含まれています。

Obfuscator インタフェースには、実装する必要がある次の 2 つのメソッドが含まれています。

難読化ツールのプラグインをコンパイルするには、必ず 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