# 所有继承activity类的类名不混淆 -keep public class * extends android.app.Activity # 所有com.whh.activity包下(不包含子包)的类类名不混淆 -keep public class com.whh.activity.* # 所有com.whh.activity包下(包含子包)的类类名不混淆 -keep public class com.whh.activity.**
8.2 作用类名以及类的成员
1 2 3 4 5 6
# 所有继承activity类的类名和类成员都不混淆 -keep public class * extends android.app.Activity{*;} # 所有com.whh.activity包下(不包含子包)的类类名和类成员都不混淆 -keep public class com.whh.activity.*{*;} # 所有com.whh.activity包下(包含子包)的类类名和类成员都不混淆 -keep public class com.whh.activity.**{*;}
keepclassmembers
此指令只作用于类成员
1 2 3 4
# 所有类的参数类型为JSONObject的构造方法不混淆 -keepclassmembers class *{ public <init> (org.json.JSONObject); }
# 保留我们使用的四大组件、Application等等这些类不被混淆 -keep public class * extends android.app.Activity -keep public class * extends android.app.Appliction -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 -keep public class com.android.vending.licensing.ILicensingService
# 保留support下的所有类及其内部成员 -keep class android.support.** {*;}
# 保留R下面的资源 -keep class **.R$* {*;}
# 保留本地native方法不被混淆 -keepclasseswithmembernames class * { native <methods>; }
# 保留在Activity中的方法参数是view的方法,避免layout中引用出错(比如onClick引用) -keepclassmembers class * extends android.app.Activity{ public void *(android.view.View); }
# 保留枚举类不被混淆 -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); }
#保留我们自定义控件(继承自View)不被混淆 -keep public class * extends android.view.View{ *** get*(); void set*(***); public <init>(android.content.Context); public <init>(android.content.Context, android.util.AttributeSet); public <init>(android.content.Context, android.util.AttributeSet, int); }
# 保留Parcelable序列化类不被混淆 -keep class * implements android.os.Parcelable {*;}
# 保留Serializable序列化的类不被混淆 -keepclassmembers class * implements java.io.Serializable {*;}
# 对于带有回调函数的onXXEvent的,不能被混淆 -keepclassmembers class * { void *(**Event); }
# webview 混淆规则 -keepclassmembers class fqcn.of.javascript.interface.for.webview { public *; } -keepclassmembers class * extends android.webkit.webViewClient { public void *(android.webkit.WebView, java.lang.String, android.graphics.Bitmap); public boolean *(android.webkit.WebView, java.lang.String); } -keepclassmembers class * extends android.webkit.webViewClient { public void *(android.webkit.webView, jav.lang.String); } -keepclassmembers class com.ljd.example.JSInterface { <methods>; }