-verbose
#忽略警告:
-ignorewarnings
#不预校验:
-dontpreverify
#不使用混合的类名:
-dontusemixedcaseclassnames
#不要跳过非公共类库:
-dontskipnonpubliclibraryclasses
#优化:
-optimizationpasses 5
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
#保留注解:
-keepattributes *Annotation*
#避免使用泛型的位置混淆后出现类型转换错误:
-keepattributes Signature
#保留本地方法:
-keepclasseswithmembers class * {
native <methods>;
}
#保留枚举类型成员的方法:
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
#保留protected方法:
-keep public class * {
public protected *;
}
#保留系统组件及其子类:
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.backup.BackupAgentHelper
-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.preference.Preference
-keep public class com.android.vending.licensing.ILicensingService
-keepclassmembers class * extends android.content.Context {
public void *(android.view.View);
public void *(android.view.MenuItem);
}
#去除support-v4包的警告,保留相关API:
-dontwarn android.support.v4.**
-keep class android.support.v4.** { *; }
-keep public class * extends android.support.v4.**
-keep public class * extends android.support.v4.app.Fragment
-keep public class * extends android.support.v4.app.FragmentActivity
-keep public class android.support.v4.accessibilityservice.** { *; }
-keep public class android.support.v4.app.** { *; }
-keep public class android.support.v4.os.** { *; }
-keep public class android.support.v4.view.** { *; }
-keep public class android.support.v4.widget.** { *; }
#保留View子类读取XML的构造方法:
-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
#保留JSON、Parcelable、Serailizable相关API:
-keepclassmembers class * {
public <init>(org.json.JSONObject);
}
-keep class * implements android.os.Parcelable {
public static final android.os.Parcelable$Creator *;
}
-keepclassmembers class * implements java.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();
}
# 保留WebView中定义的与JS交互的类:
-keepattributes JavascriptInterface
-keep public class com.mypackage.MyClass$MyJavaScriptInterface
-keep public class * implements com.mypackage.MyClass$MyJavaScriptInterface
-keepclassmembers class com.mypackage.MyClass$MyJavaScriptInterface {
<methods>;
}
#去除调试日志,将所有Log.d()改为Log.i():
-assumenosideeffects class android.util.Log{
public static *** d(...);
public static *** i(...);
}
#保留资源文件
-keepclassmembers class **.R$* {
public static <fields>;
}
#保留实体类:
-keep class com.rincliu.library.entity.**{ *; }
#导入第三方库:
-libraryjars libs/android-support-v4.jar
如果使用了其他第三方类库,也会有相关成员不能混淆,具体可查看对应的官方文档说明,以下为示例:
#保留Google GSON相关API:
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
-keep class com.google.gson.** { *;}
#保留微信相关API:
-keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*;}
-keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*;}
#保留友盟相关API:
-keep public class com.umeng.fb.ui.ThreadView {
}