Output
Output — Options
The Output — Options page controls where PreEmptive Protection™ DashO™ for Android & Java will place the results of the build and what form those results will take.
Create Directory/Single Jar/APK
DashO can place the results of the build into a directory, a single jar, or an APK. Changing the main output type may change other settings on this page to their defaults. See the <output> element for instructions regarding configuring the output.
Merge Inputs
When outputting to a directory, DashO can combine the obfuscated results into a single directory or keep the original packaging of the input classes.
Auto Copy
Auto copy controls how non-class files are handled when merging inputs. It is available when merge is on and works as follows:
Merge Off
- Non-class files from jar inputs will be copied. Non-class files from input directories will not be copied.
Merge On
Auto Copy On – Non-class files from both input directories and input jars will be copied to the output.
Auto Copy Off – Non-class files will not be copied to the output.
Note:
XML configuration files found when processing the non-class files may be updated allowing class and method names to be changed.
Name and Manifest
The Name field specifies the name of the output directory or jar. When merging is off only a directory can be used. DashO will use this as the root of the output and will attempt to recreate the hierarchy of the original input jars and directories.
If you have DashO create a single merged jar for you DashO can add a manifest file to the jar. The manifest can either be a text file or a jar. DashO can extract the manifest from a jar file.
Jar Options
Compress: Not only store data but also compress it.
Level: Level at which file compression should be performed. Valid values range from
0
(no compression/fastest) to9
. The default value is6
.Exclude Directory Entries: Store only file entries, not directory entries.
Preserve Jars With No Classes: Output jars when they have no remaining classes. This can be used to output resource jars.
Constant Pool Tag
The optional constant pool tag text is inserted into every class in the resulting output. See <constpooltag> for details.
SourceFile Tag
The SourceFile
attribute of every resulting output class is set to the given value.
See <sourcefile> for details.
Output — APK
The Output — APK page configures settings specific to APK output.
Build Tools Directory
Specifies the location for the Android build tools.
The directory configured should contain the zipalign
command.
Zipalign
Specifies if the output APK should be aligned (uses zipalign
).
This box is only enabled if the APK is being signed.
AAPT Version
Specifies if the output APK should be generated using AAPT
or AAPT2
.
Output — Reports
The Output — Reports page configures the generation of reports that detail the results of the build.
Report file
Specifies the name and location for a report outlining the class and member Removal and Renaming performed by DashO.
A summary is given detailing the total methods/fields/constant pool entries, as well as the final number and percentage of reduction after DashO execution.
It also contains information about dynamically loaded classes, including reflection and Class.forName()
calls.
Renaming Report File
This specifies the name and location for a report listing old and new names for renamed classes as well as their renamed members.
Output — Preverification
You can choose to run the preverifier on your CLDC application after DashO is finished processing your class files. You can enable or disable preverification by checking the Run Preverifier checkbox.
By default DashO will try to find the preverifier application preverify
on the system path.
If you need to run a particular version of the preverifier you can explicitly specify which one to run.
No Finalize
Pass -nofinalize
to the preverifier: no finalizers are allowed in the input.
No Floating Point
Pass -nofp
to the preverifier: no floating point operations allowed in the input.
No Native Methods
Pass -nonative
to the preverifier: no native methods allowed.
Output — Signing
You can have DashO sign the output jars or APK that it produces. You can enable or disable signing by checking the Sign Jars/APK checkbox.
By default, DashO will try to find the signing application, jarsigner
, in the configured JDK location.
If you are not including the JDK, need to run a particular version of jarsigner
, or want to run apksigner
, you can explicitly specify the path.
Note: If you want to use the
jarsigner
executable on the system path, you can simply enterjarsigner
for the signing tool.
Key Store
This information defines the key store that contains the private key used for signing.
Only the Password is required.
The Type defaults to use the type specified by the JVM running DashO (e.g. JKS
or PKCS12
).
The Location defaults to the .keystore
file in your home directory.
Passwords that do not contain property references are stored in an encrypted form in the project file.
Signing Key
This information specifies the private key that is used to perform the signing. Only the Alias value is required. The Password defaults to the password specified for the key store. This password is also stored encrypted in the project file if it does not contain any property references.
Options
Signature File
This corresponds to the -sigFile
option on jarsigner
and the --v1-signer-name
option on apksigner
.
Internals .SF & Sections Only
These values correspond to the -internalsf
and -sectionsonly
options of jarsigner
.
They are not applicable with apksigner
.
Additional Arguments
This field allows you to specify any additional flags.
If signing APKs using jarsigner
you may need to enter additional arguments (e.g. -sigalg SHA1withRSA -digestalg SHA1
).
If using apksigner
you may want to enter additional arguments to determine the APK signature scheme (e.g. --v1-signing-enabled [true|false] --v2-signing-enabled [true|false]
or --min-sdk-version nn --max-sdk-version nn
(where nn
is an sdk version)).
Note:
Signing will pass the passwords via the environment instead of the command line. If you need to use an older version ofjarsigner
which does not support this, add a User Property namedSIGN_WITH_PLAINTEXT_PASSWORDS
and set it totrue
.
Please see the jarsigner and apksigner documentation for details on the arguments.