-optimizationpasses 5 # 指定代码的压缩级别 -allowaccessmodification #优化时允许访问并修改有修饰符的类和类的成员 -dontusemixedcaseclassnames # 是否使用大小写混合 -dontskipnonpubliclibraryclasses # 是否混淆第三方jar -dontpreverify # 混淆时是否做预校验 -verbose # 混淆时是否记录日志 -ignorewarnings # 忽略警告,避免打包时某些警告出现 -optimizations !code/simplification/arithmetic,!code/simplification/cast,!field/*,!class/merging/* # 混淆时所采用的算法 -keepattributes *Annotation* -keepclasseswithmembernames class * { # 保持 native 方法不被混淆 native ; } -keepclassmembers public class * extends android.view.View { void set*(***); *** get*(); } -keepclassmembers class * extends android.app.Activity { public void *(android.view.View); } -keepclassmembers enum * { # 保持枚举 enum 类不被混淆 public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { # 保持 Parcelable 不被混淆 public static final android.os.Parcelable$Creator *; } -keepclassmembers class **.R$* { #不混淆R文件 public static ; } -dontwarn android.support.** ##--- End android默认 --- ##--- For:不能被混淆的 --- -keep public class * extends android.app.Activity -keep public class * extends android.app.Fragment -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference ##--- For:保持自定义控件类不被混淆 --- -keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet); } -keepclasseswithmembers class * { public (android.content.Context, android.util.AttributeSet, int); } ##--- For:android-support-v4 --- -dontwarn android.support.v4.** -keep class android.support.v4.** { *; } -keep interface android.support.v4.app.** { *; } -keep class * extends android.support.v4.** { *; } -keep public class * extends android.support.v4.** -keep class * extends android.support.v4.app.** {*;} -keep class * extends android.support.v4.view.** {*;} ##--- For:Serializable --- -keep class * implements java.io.Serializable {*;} -keepnames class * implements java.io.Serializable -keepclassmembers class * implements java.io.Serializable {*;} ##--- For:Gson --- -keepattributes *Annotation* -keep class com.google.gson.stream.** { *; } ##--- For:Remove log --- -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(...); } ##--- For:attributes(未启用) --- #-keepattributes SourceFile,LineNumberTable # 保持反编译工具能看到代码的行数,以及release包安装后出现异常信息可以知道在哪行代码出现异常,建议不启用 -keepattributes *Annotation* #使用注解 -keepattributes Signature #过滤泛型 出现类型转换错误时,启用这个 #-keepattributes *Exceptions*,EnclosingMethod #没试过,未知效果