DashO Java Obfuscator Change Log V10.0 Build 0 – Release Date August 21, 2019

Change Log – Version 10.0.0 – Release Date August 21, 2019


DashO 10.0 introduces a new Android Mode, which works with the new DashO Gradle Plugin for Android, providing better support for Android projects.

This release contains some breaking changes as mentioned below.

Please see the Upgrading page for migration instructions. Note that there is a Migration Wizard that will migrate most Android projects automatically.


  • Added a new DashO Gradle Plugin for Android.
  • Added Android Mode which is specifically designed to work with the DashO Gradle Plugin for Android as part of an Android build process that uses R8.
    • The GUI now has a Standard Mode and an Android Mode.
    • The Android Mode GUI will prompt you to refresh the list of input classes when it detects changes in the inputs.
    • To migrate to this new Android integration refer to the Upgrading page.
    • Added new paths in the wizard to:
      • Generate new Android Mode projects.
      • Migrate Android projects that use DashO Gradle Plugin to the new DashO Gradle Plugin for Android.
  • Reorganized the DashO User Guide to have a more intuitive layout, separating discussion of obfuscation concepts from the project file reference and the user interface.
  • The GUI listens for changes to the configuration and will prompt to reload.
  • DashO is no longer restricted to running on Java 7 – 10, and can be run on Java 11 and later.
    Support for processing bytecode from Java 11 and later is not yet available.
  • Updated the GUI to easily configure Dalvik compatibility.
  • The random reordering of simple blocks in a method by Block Jumbling now varies between runs of DashO.
  • When Control Flow is enabled and Removal is configured to preserve the Local Variable Table for a method, the method’s parameter names will now be preserved, but information about local variables will still be removed.
  • Added the --pathMap command line option which allows specifying a file that configures DashO’s input and output paths.
    This option is currently only available for Android Mode.
  • Updated the DashO-GameOfLife sample.
  • Improved the Spring Bean sample.
  • Improved some error messages.

This release may contain protection enhancements not described here.


  • Updated the product name from PreEmptive Protection – DashO to PreEmptive Protection DashO for Android & Java.
  • Updated the DashO Gradle Plugins for Java (previously called DashO Gradle Plugin):
    • v3.4.0 with deprecated support for the Android Gradle 3.4.0 plugin.
    • v4.0.0 with no Android support.
    • v4.1.0 with an updated name.
  • Updated to use ASM version 7.1.
  • Updated to use apktool version 2.4.0.
  • Breaking Changes:
    • DashO Gradle Plugin for Android versions used with DashO 10 Betas (0.9.0 and 0.10.0) are no longer supported.
    • The Append current Java runtime and Use Classpath from Environment options have been removed.
    • Wildcard class matching (**) for method call removal has been removed.
    • DashO’s public get*Version*() methods have been removed.
    • Proxy configuration within the DashO GUI has been removed.
      Proxy configuration is now specified using standard Java system properties.
    • Removed support for deprecated properties: ${dasho.java.version}, ${jce.jar}, and ${jsse.jar}.
    • The DashO Eclipse Plugin has been removed.
  • The javaws.jar property has been deprecated, and cannot be used in some configurations.
  • Control Flow and String Encryption are now enabled by default on new projects.
  • Removed the option to hide the toolbar.
  • The navigation tree in the DashO GUI can no longer be collapsed.
  • Packages in rule editors are now listed hierarchically.
  • DashO will now only warn once per build if Control Flow is enabled and Removal is configured to preserve the Local Variable Table or Local Variable Type Table.
  • DashO now will obscure all but the last four digits of the license key in the build output.
  • When DashO is run with a User license (e.g. not a Build license), a notice will be printed indicating that User licenses may not be used to protect binaries for general release.
  • Updated the End User License Agreement to match https://www.preemptive.com/eula.


  • Fixed a rare issue when reading MethodParameters attributes which do not reference a constant pool entry.