The Wireless Toolkit contains a support framework for bytecode obfuscators. It also includes a plug-in for this framework for the ProGuard and Retroguard bytecode obfuscators. You can use a bytecode obfuscator other than ProGuard or RetroGuard, however, you must manually implement the plug-in for it. This appendix describes the implementation procedure.
To plug in a bytecode obfuscator of your choice into the Wireless Toolkit’s packaging process, you must follow these steps:
om.sun.kvem.environment.Obfuscator
interface.
The class file for this interface is located in the {j2mewtk.dir}\wtklib\kenv.zip
file. The implementation class needs to implement the following two interface methods:
createScriptFile(File jadFilename, File projectDir)
run(File jarFileObfuscated, String wtkBinDir,
String wtkLibDir, String jarFilename, String projectDir, String classPath, String emptyApi)
where
jarFileObfuscated
is the file that holds the obfuscated JAR
wtkBinDir
is the directory holding the Wireless Toolkit binary files
wtkLibDir
is the directory holding the Wireless Toolkit JAR files
jarFilename
is the full path to the JAR file to be obfuscated
projectDir
is the full path to the main directory of your project
classPath
is the full path to the set of files that make up the API classpath for the project based on your API selections in the Project Settings dialog box, for example, the paths for the cldcapi10.jar
and midpapi20.jar
files.
emptyApi
is the full path to the version of the MIDP API containing stub methods (that is, method signatures without method bodies) in the {j2mewtk.dir}\wtklib
directory
The first method creates a script file that is used by most obfuscators as a method of input to determine which classes and methods are not to be obfuscated. The second method is called when the Wireless Toolkit attempts to execute the obfuscator.
ktools.properties
file located in {j2mewtk.dir}\wtklib\Windows
:obfuscator.runner.class.name
. The fully qualified name of the class implementing the obfuscator interface. This property tells the Wireless Toolkit the class name it needs to load to execute the obfuscator.obfuscator.runner.classpath
. The location of the implementation class. The location can either be a directory path (absolute or relative to {j2mewtk.dir}) or a .jar
or .zip
filename.obfuscate.script.name
. The name of a static script file that you use to append to your script which is generated through the createScriptFile()
method.
For example, the Wireless Toolkit has an implementation that executes the ProGuard obfuscator. The class name is com.sun.kvem.ktools.RunPro
and it is located in the ktools.zip
file in the wtklib
directory. The properties’ values are:
obfuscator.runner.class.name: com.sun.kvem.ktools.RunPro
obfuscator.runner.classpath: wtklib\\ktools.zip
obfuscate.script.name: ignore.rgs
You can get the proguard.jar
file by downloading the .zip
file from
http://proguard.sourceforge.net/ and extracting the .jar
file. The proguard.jar
file must be placed in the Wireless Toolkit’s bin
directory: {j2mewtk.dir}\bin
.
Basic Customization Guide Java™ 2 Platform, Micro Edition, Wireless Toolkit, Version 2.1 |
Copyright © 2003 Sun Microsystems, Inc. All rights reserved.