Menu
Menu
inquire

Documentation

Android

FAQs

General FAQs - DexProtector for Android

1. What types of final packages can be DexProtected?

For Android: All APKs, App Bundles (AABs), and Android libraries/SDKs (AARs).

2. Is DexProtector server-side or offline?

The protection process takes place entirely offline, but Runtime Checks can (optionally) send reports to servers.

3. Does DexProtector work with apps created with cross-platform frameworks, such as Cordova (/Phonegap), Ionic, ReactNative, Flutter, NativeScript?

Yes; see the page on Implementations and Integrations.

4. Can DexProtector secure Native Code / Native Libraries?

Yes; see Native Library Encryption and JNI Obfuscation in the Configuration File Overview.

5. Is DexProtector compatible with name obfuscators such as R8 or ProGuard?

Yes, DexProtector is fully compatible with name obfuscators such as R8 and ProGuard. For maximum security, it is worth using R8/ProGuard for additional name obfuscation, but certainly not as a replacement for DexProtector's protection mechanisms, which are far more comprehensive and work at a deeper level. The two tools can be combined seamlessly, with no conflicts. Apply ProGuard first for name obfuscation, and then either direct DexProtector to the ProGuard mapping file (via the CLI, via DexProtector Studio, or in the <proguardMapFile> tag in the configuration file: e.g. <proguardMapFile>/Users/developer/project/proguard/mapping.txt</proguardMapFile>), or specify both dependencies in Gradle and DexProtector will locate the mapping file automatically.

6. How does DexProtector work with Gradle?

The DexProtector Gradle plugin .jar file is included in the standard distribution package; all you need to do is set the path to DexProtector in buildscript.repositories in the project.build.gradle, add ':dexprotector-gradle-plugin:' and ':dexprotector:' as dependencies in the buildscript, apply the DexProtector plugin to the app.build.gradle, and specify the DexProtector configuration file in the productFlavor and/or buildType block. For more information, see our guide to the DexProtector Gradle plugin.

7. Can we use DexProtector with Bitrise / Jenkins / Bitbucket Pipelines?

Yes; and we have a verified Bitrise Step: https://www.bitrise.io/integrations/steps/dexprotector

FAQs on Installation, Activation, Configuration, and Distribution

1. Where can I download the distribution package?

Links to distribution packages will be sent directly when trial or full licenses are issued, and when there are major updates to DexProtector. If you would like to request the latest version, please write to our support team.

2. Which is the most recent version of DexProtector?

To check the most recent version of DexProtector, along with all release notes, please see our Product updates page.

3. Which version am I currently using?

To check which version of DexProtector you are currently using, you can (a) click License Info in DexProtector Studio; (b) run the following command in the CLI: java -jar dexprotector.jar -info; or, (c) check the DexProtector log for the following information:

DexProtector Enterprise

Version: 12.5.9

Build id: 20220131

Licensed to: dexprotector@licelus.com

Support until: 01/01/2023

4. When does my license expire?

To check when your support license expires, you can (a) click License Info in DexProtector Studio; (b) run the following command in the CLI: java -jar dexprotector.jar -info; or, (c) check the DexProtector log for the following information:

DexProtector Enterprise

Version: 12.5.9

Build id: 20220131

Licensed to: dexprotector@licelus.com

Support until: 01/01/2023

5. Can I continue to use DexProtector after my license has expired?

Under the terms of our End User Licensing Agreement, you need to have an active license to use DexProtector to protect an app for distribution.

6. What will happen to previously DexProtected apps after my license has expired?

In the majority of cases, there will be no problems with DexProtected apps that have already been distributed; conflicts sometimes arise for two reasons: (1) When new OS versions are released; (2) When new devices are released. It is not always possible to futureproof DexProtector against developments related to these. In terms of security, though, published applications will be vulnerable when new tools and techniques used for attacks are developed, or when existing tools and techniques are updated. DexProtector has to be updated frequently to detect and prevent these tools.

7. What are the system requirements for DexProtector?

DexProtector works equally with Linux, Windows, or MacOS. The only requirement (or rather strong recommendation) is use Oracle's JRE, and it is also recommended to use the most recent version of Java.

8. Does DexProtector work on MacOS with Apple Silicon (ARM64)?

Yes, versions of DexProtector work on MacOS with Apple Silicon (ARM64), such as the M1 chip.

9. Why do I get the error message: 'The license file is not found or corrupted. Try running DexProtector with the -activate option'?

Activation codes are single-use, and license files are restricted to a specific user on a specific device / operating environment; they cannot be transferred between users or between devices / operating environments. Every time you try to use DexProtector on an additional device, you will need to request a new code. License files can also be corrupted due to OS updates, the effects of antivirus software, and the presence of external storage devices. Depending on your license agreement, there may be a limit to the number of active license files that you can have at any one time, but you are free to request a new activation code as often as you find necessary by writing to our support team.

10. Does DexProtector support Google Play App Signing?

Yes; just specify the keystore information and SHA256 fingerprint of the target certificate in your configuration. DexProtector will re-sign the package with the upload key, and then during every runtime will perform checks to make sure that the App Signing Key's certificate corresponds to the SHA256 fingerprint it calculates. For more information, see our guide to Google Play App Signing.

11. My app is crashing after DexProtection; what can I do?

If you are testing and your app is crashing unexpectedly, please make sure that (a) you are using the most recent version of DexProtector; (b) you have the correct signing configuration, and (c) you have not encrypted any classes or resources that need to be accessed directly by the system. If you continue to have problems, please write to our support team, and attach the DexProtected app, the relevant configuration file, and the verbose protection log. If you suspect a conflict with R8/ProGuard, please also send the mapping file.

If your app is crashing unexpectedly on end users' devices after distribution, please write to our support team, and include all relevant stack traces, and details from the developer console (Google Play or Amazon Appstore) about app version, affected devices, and OS versions. Please also attach the DexProtected app, the relevant configuration file, and the verbose protection log.To generate the verbose log, do as follows depending on how you use DexProtector:

DexProtector Studio: Enable verbose logging via the Build Settings window, then after protection find the link to the saved log in the 'Protection results' window

CLI: Add -verbose to your command line for running DexProtector, then redirect the standard output to a file (… > dexprotector_log.txt 2>&1)

Gradle plugin: add <verbose>true</verbose> to your DexProtector configuration file; the logs will be saved at build/outputs/dexprotector/<buildType>/* (please send all files from the folder)