The input section is used to configure the inputs for your PreEmptive Protection™ DashO™ project.
Input — Jars and Classes
The input section starts with Input — Jars and Classes where the locations for the classes to be processed are configured. DashO can handle directories of classes, zip files, jar files, and war files in the classpath. It also supports a single APK file. Entries may be added by selecting them from the file system using the Add button. You can also create an entry by using the New button and editing its name.
Note: Adding and removing entries will automatically refresh the class tree. However, manually entered names do not automatically refresh. Please use the refresh button when finished editing the name.
See the <inputpath> element for more information regarding the creation of input entries.
Input — Supporting Classpath
DashO needs access to classes in the Java or Android runtime and to classes in third party jars or modules. The classes referenced here are needed for DashO's analysis but are not processed. Entries may be added by selecting them from the file system using the Add button. You can also create an entry by using the New button and editing its name.
Note: If you need DashO to warn instead of error when it can't find a configured support entry, add a User Property named
WARN_ON_MISSING_SUPPORT_ENTRY
and set it totrue
.
Include JDK
If enabled, DashO will include all the bootstrap and extension classes provided by the specified JDK home directory as supports. Projects that use the Android API or J2ME should not include the JDK. These projects require the runtime jar for these particular environments: e.g. Android.jar
or midpapi10.jar
.
The default value, ${JDK_HOME:-}
, will resolve to the JDK_HOME
environment variable. If you do not have that environment variable, you can define a JDK_HOME
User Property. You can also browse to the location of the JDK (e.g. C:\Program Files\AdoptOpenJDK\jdk-11.x.y
or /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
) and not use a property.
Note: The included JDK is also used when locating and running other programs such as jarsigner.
Set JDK_HOME and JAVA_HOME properties
Sets the JDK_HOME
and JAVA_HOME
properties to the specified JDK value, assuming that Include JDK is enabled as well.
See the <classpath> element for more information regarding the creation of new classpath entries.
Input — Included Non-Class Files
The Input — Included Non-Class Files page lets you specify the source for non-class contents, such as image, property, or configuration files that need to be in the application.
Directories, individual files, or jar files may be added to list by selecting an existing file using Add button. You can also create an entry by using the New button and editing its name. For directories and jars all non-class files are copied into DashO's output. Directory entries can contain wildcard patterns using the *
character to select particular file types.
Non-class files inside directory, zip, jar, and war sources will be copied to the output destination preserving their relative internal directories. Specified non-class files will be copied to the output destination. See the <includenonclassfiles> element for details.
Notes:
XML configuration files found when processing the non-class files may be updated.This allows class and method names to be changed.
If you are merging inputs and your inputs contain the non-class files you can either turn on Auto Copy or reference them here.
If you are not merging inputs DashO will copy over all non-class files in your input jars automatically; but non-class files that appear in input directories will not be copied.
See Auto copy for details.
Input — Options
This page controls some basic options that DashO uses while analyzing the input classes.
Ignore Missing Classes
DashO will attempt to analyze all classes that the application attempts to call. You can instruct DashO to ignore missing classes by selecting this option.
Note: DashO cannot ignore classes and interfaces that the application extends or implements.
Ignore Missing Members
DashO will attempt to locate fields and concrete implementations of methods as part of its analysis. Turning this option on lets DashO proceeded even if it cannot locate the referenced method or field. Use this option with caution.
Ignore Missing Entry Points
When this option is enabled, DashO will generate warnings for the entry points that cannot be located rather than errors. By default, DashO build stops with an error message if any of the configured Java project entry points are missing. On large projects, there can be multiple missing entry points, and after removing one entry point from the config file and re-running the project, another missing entry point will stop the build, and so on. Therefore, this option will prevent the build from stopping in case of a missing entry point.
Exclude classes having a method larger than 64K
This option will automatically exclude classes with large methods (a method larger than 65535 bytes of code after obfuscation) that fail the builds. When this option is on
, DashO will automatically add such classes to the "Global Processing Exclusions" list. Therefore, all the methods of such classes will be excluded from obfuscation, even the smaller methods.
Bypass DashO Processing
Turning this option on configures DashO to not perform any processing. The inputs will simply be copied to the output. This option is supported when outputting an unmerged directory or an APK.
Reflection Halts Build
DashO's analysis makes note of reflection usage in the application so that the targets of reflection can be identified. Turn this option on when you are determining what parts of the application use reflection.
Note: You may need to disable checks when enabling this option because some injected code uses reflection.
Determine Reflected Classes
DashO can determine some targets of reflection and automatically make sure that these classes appear in the output. Note that this processing can increase the build time.
Rename Reflected Classes
By default, targets of reflection are not renamed. Use this option to allow these classes to be renamed.