Enabling ProGuard with a custom obfuscation configuration file

suggest change

ProGuard allows the developer to obfuscate, shrink and optimize his code.

#1 The first step of the procedure is to enable proguard on the build.

This can be done by setting the ‘minifyEnabled’ command to true on your desired build

#2 The second step is to specify which proguard files are we using for the given build

This can be done by setting the ‘proguardFiles’ line with the proper filenames

buildTypes {
    debug {
        minifyEnabled false
    testRelease {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules-tests.pro'
    productionRelease {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules-tests.pro', 'proguard-rules-release.pro'

#3 The developer can then edit his proguard file with the rules he desires.

That can be done by editting the file (for example ‘proguard-rules-tests.pro’) and adding the desired constraints. The following file serves as an example proguard file

// default & basic optimization configurations
-optimizationpasses 5
-repackageclasses ''
-optimizations !code/simplification/arithmetic
-keepattributes *Annotation*


-dump obfuscation/class_files.txt
-printseeds obfuscation/seeds.txt
-printusage obfuscation/unused.txt // unused classes that are stripped out in the process
-printmapping obfuscation/mapping.txt // mapping file that shows the obfuscated names of the classes after proguad is applied

// the developer can specify keywords for the obfuscation (I myself use fruits for obfuscation names once in a while :-) )
-obfuscationdictionary obfuscation/keywords.txt
-classobfuscationdictionary obfuscation/keywords.txt
-packageobfuscationdictionary obfuscation/keywords.txt

Finally, whenever the developer runs and/or generates his new .APK file, the custom proguard configurations will be applied thus fulfilling the requirements.

Feedback about page:

Optional: your email if you want me to get back to you:

Table Of Contents