# Proguard step for stripping debug information. # # This is useful to work around a bug in the way Proguard handles debug information: it # sometimes corrupts it. Classes with corrupt debug information cannot be dexed, but # classes with *no* debug information can be. There's no way to configure Proguard to # delete debug information on a per-class basis, so we need this special extra step for # stripping debug information only from those classes for which the Proguard bug is # encountered. # # Currently, this pass is applied to all bundled library jars for which we are not # compiling the source. This is slightly more than is strictly necessary to work around # the Proguard bug, but such debug information is of negligible value and stripping it # too slightly simplifies the makefile and saves us a handful of kilobytes of binary size. # # Configuring Proguard to do nothing except strip metadata is done by having it run only # the obfuscation pass, but with a configuration that prevents it from renaming any classes. # It then attempts to delete class metadata, so we further configure it not to do so for # anything except the problematic debug information. # Run only the obfuscator. -dontoptimize -dontshrink -dontpreverify -verbose # Don't rename anything. -keeppackagenames # Seriously, don't rename anything. -keep class * -keepclassmembers class * { *; } # Don't delete other useful metadata. -keepattributes Exceptions,InnerClasses,Signature,Deprecated,*Annotation*,EnclosingMethod # Don't print spurious warnings from the support library. # See: http://stackoverflow.com/questions/22441366/note-android-support-v4-text-icucompatics-cant-find-dynamically-referenced-cl -dontnote android.support.** -dontwarn android.support.**