-optimizationpasses 5# 指定代码的压缩级别-dontusemixedcaseclassnames # 是否使用大小写混合-dontpreverify # 混淆时是否做预校验-verbose # 混淆时是否记录日志-optimizations !code/simplification/arithmetic,!field/*,!class/merging/* # 混淆时所采用的算法-keep public class * extendsandroid.app.Activity# 保持哪些类不被混淆-keep public class * extendsandroid.app.Application# 保持哪些类不被混淆-keep public class * extendsandroid.app.Service# 保持哪些类不被混淆-keep public class * extendsandroid.content.BroadcastReceiver# 保持哪些类不被混淆-keep public class * extendsandroid.content.ContentProvider# 保持哪些类不被混淆-keep public class * extendsandroid.app.backup.BackupAgentHelper# 保持哪些类不被混淆-keep public class * extendsandroid.preference.Preference# 保持哪些类不被混淆-keep public classcom.android.vending.licensing.ILicensingService# 保持哪些类不被混淆-keepclasseswithmembernames class * { # 保持 native 方法不被混淆 native <methods>;}
-keepclasseswithmembers class * { # 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet);}
-keepclasseswithmembers class * {# 保持自定义控件类不被混淆 public <init>(android.content.Context, android.util.AttributeSet, int);}
-keepclassmembers class * extendsandroid.app.Activity { # 保持自定义控件类不被混淆 public void *(android.view.View);}
-keepclassmembers enum * { # 保持枚举 enum 类不被混淆 public static **[] values(); public static ** valueOf(java.lang.String);}
-keep class * implementsandroid.os.Parcelable {#保持Parcelable不被混淆 public static final android.os.Parcelable$Creator *; } # Explicitly preserve all serialization members. The Serializable interface # is only a marker interface, so it wouldn't save them.
-keep public class * implementsjava.io.Serializable {*;}
-keepclassmembers class * implementsjava.io.Serializable { static final long serialVersionUID;
private static final java.io.ObjectStreamField[] serialPersistentFields;
private void writeObject(java.io.ObjectOutputStream);
private void readObject(java.io.ObjectInputStream);
java.lang.Object writeReplace();
java.lang.Object readResolve(); }
-keepclassmembers class * { public<init> (org.json.JSONObject); } #com.demo.demo是你的包名-keep public classcom.demo.demo.R$*{ publicstaticfinalint *; }
#Gson
# removes such information by default, so configure it to keep all of it.
-keepattributes Signature# Gson specific classes-keep classsun.misc.Unsafe { *; }
-keep classcom.google.gson.stream.** { *; } # Application classes that will be serialized/deserialized over Gson-keep classcom.google.gson.examples.android.model.** { *; }
-keep classcom.google.gson.** { *;} #这句非常重要,主要是滤掉 com.demo.demo.bean包下的所有.class文件不进行混淆编译,com.demo.demo是你的包名-keep classcom.demo.demo.bean.** {*;}
#Butterknife
-keep classbutterknife.** { *; }
-dontwarn butterknife.internal.** -keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * { @butterknife.* <fields>; }
-keepclasseswithmembernames class * { @butterknife.* <methods>; }
#RxJava
# rx
-dontwarn rx.**
-keepclassmembers classrx.** { *; }
# retrolambda
-dontwarn java.lang.invoke.*
#Glide
-keep public class * implementscom.bumptech.glide.module.GlideModule-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** { **[] $VALUES; public *; }
# okhttp
-dontwarn okhttp3.**
-keep classokhttp3.**{*;}
# okio
-dontwarn okio.**
-keep classokio.**{*;}