Enabling ProGuard with a custom obfuscation configuration file
suggest changeProGuard 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 -dontpreverify -repackageclasses '' -allowaccessmodification -optimizations !code/simplification/arithmetic -keepattributes *Annotation* -verbose -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.