| ############################################################################### |
| # General settings. |
| ############################################################################### |
| |
| -verbose |
| |
| # We can debug the ProGuard configuration by instrumenting the code and |
| # checking the log for feedback. Disable the option again for actual releases! |
| |
| #-addconfigurationdebugging |
| |
| # We can also disable the individual processing steps. |
| |
| #-dontshrink |
| #-dontoptimize |
| #-dontobfuscate |
| |
| # Specifically target Android. |
| |
| -android |
| |
| |
| ############################################################################### |
| # Settings to handle reflection in the code. |
| ############################################################################### |
| |
| # Preserve annotated and generated classes for Dagger. |
| |
| -keepclassmembers,allowobfuscation class * { |
| @dagger.** *; |
| } |
| |
| -keep class **$$ModuleAdapter |
| -keep class **$$InjectAdapter |
| -keep class **$$StaticInjection |
| |
| -if class **$$ModuleAdapter |
| -keep class <1> |
| |
| -if class **$$InjectAdapter |
| -keep class <1> |
| |
| -if class **$$StaticInjection |
| -keep class <1> |
| |
| -keepnames class dagger.Lazy |
| |
| # Preserve annotated and generated classes for Butterknife. |
| |
| -keep class **$$ViewBinder { |
| public static void bind(...); |
| public static void unbind(...); |
| } |
| |
| -if class **$$ViewBinder |
| -keep class <1> |
| |
| -keep class **_ViewBinding { |
| <init>(<1>, android.view.View); |
| } |
| |
| -if class **_ViewBinding |
| -keep class <1> |
| |
| # Preserve fields that are serialized with GSON. |
| |
| #-keepclassmembers class com.example.SerializedClass1, |
| # com.example.SerializedClass2 { |
| # <fields>; |
| #} |
| |
| -keepclassmembers,allowobfuscation class * { |
| @com.google.gson.annotations.SerializedName <fields>; |
| } |
| |
| -keep,allowobfuscation @interface com.google.gson.annotations.** |
| |
| |
| ############################################################################### |
| # Further optimizations. |
| ############################################################################### |
| |
| # If you wish, you can let the optimization step remove Android logging calls. |
| |
| #-assumenosideeffects class android.util.Log { |
| # public static boolean isLoggable(java.lang.String, int); |
| # public static int v(...); |
| # public static int i(...); |
| # public static int w(...); |
| # public static int d(...); |
| # public static int e(...); |
| #} |
| |
| # In that case, it's especially useful to also clean up any corresponding |
| # string concatenation calls. |
| |
| -assumenoexternalsideeffects class java.lang.StringBuilder { |
| public java.lang.StringBuilder(); |
| public java.lang.StringBuilder(int); |
| public java.lang.StringBuilder(java.lang.String); |
| public java.lang.StringBuilder append(java.lang.Object); |
| public java.lang.StringBuilder append(java.lang.String); |
| public java.lang.StringBuilder append(java.lang.StringBuffer); |
| public java.lang.StringBuilder append(char[]); |
| public java.lang.StringBuilder append(char[], int, int); |
| public java.lang.StringBuilder append(boolean); |
| public java.lang.StringBuilder append(char); |
| public java.lang.StringBuilder append(int); |
| public java.lang.StringBuilder append(long); |
| public java.lang.StringBuilder append(float); |
| public java.lang.StringBuilder append(double); |
| public java.lang.String toString(); |
| } |
| |
| -assumenoexternalreturnvalues class java.lang.StringBuilder { |
| public java.lang.StringBuilder append(java.lang.Object); |
| public java.lang.StringBuilder append(java.lang.String); |
| public java.lang.StringBuilder append(java.lang.StringBuffer); |
| public java.lang.StringBuilder append(char[]); |
| public java.lang.StringBuilder append(char[], int, int); |
| public java.lang.StringBuilder append(boolean); |
| public java.lang.StringBuilder append(char); |
| public java.lang.StringBuilder append(int); |
| public java.lang.StringBuilder append(long); |
| public java.lang.StringBuilder append(float); |
| public java.lang.StringBuilder append(double); |
| } |