#基本指令
# 設(shè)置混淆的壓縮比率 0 ~ 7
-optimizationpasses 5
# 混淆時不使用大小寫混合,混淆后的類名為小寫
-dontusemixedcaseclassnames
# 指定不去忽略非公共庫的類
-dontskipnonpubliclibraryclasses
# 指定不去忽略非公共庫的成員
-dontskipnonpubliclibraryclassmembers
# 混淆時不做預(yù)校驗
-dontpreverify? ? ? ?
# 混淆時不記錄日志
-verbose? ? ? ? ?
# 忽略警告
-ignorewarning? ? ? ?
# 代碼優(yōu)化
-dontshrink
# 不優(yōu)化輸入的類文件? ? ? ? ? ? ?
-dontoptimize
# 保留注解不混淆? ? ? ? ?
-keepattributes *Annotation*,InnerClasses
# 避免混淆泛型
-keepattributes Signature
# 保留代碼行號,方便異常信息的追蹤
-keepattributes SourceFile,LineNumberTable
# 混淆采用的算法
-optimizations !code/simplification/cast,!field/*,!class/merging/*
# dump.txt文件列出apk包內(nèi)所有class的內(nèi)部結(jié)構(gòu)
-dump class_files.txt? ? ?
# seeds.txt文件列出未混淆的類和成員
-printseeds seeds.txt
# usage.txt文件列出從apk中刪除的代碼
-printusage unused.txt
# mapping.txt文件列出混淆前后的映射
-printmapping mapping.txt
#不需混淆的Android類
-keep public class * extends android.app.Fragment
-keep public class * extends android.app.Activity
-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.preference.Preference
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.support.v4.**
-keep public class * extends android.support.annotation.**
-keep public class * extends android.support.v7.**
-keep public class * extends android.app.backup.BackupAgentHelper
-keep public class * extends android.preference.Preference
-keep public class * extends android.view.View
-keep public class com.android.vending.licensing.ILicensingService
-keep class android.support.** {*;}
#support-v4包
-dontwarn android.support.v4.**
-keep class android.support.v4.app.** { *; }
-keep interface android.support.v4.app.** { *; }
-keep class android.support.v4.** { *; }
#support-v7包
-dontwarn android.support.v7.**
-keep class android.support.v7.internal.** { *; }
-keep interface android.support.v7.internal.** { *; }
-keep class android.support.v7.** { *; }
#support design
-dontwarn android.support.design.**
-keep class android.support.design.** { *; }
-keep interface android.support.design.** { *; }
-keep public class android.support.design.R$* { *; }
#避免混淆自定義控件類的 get/set 方法和構(gòu)造函數(shù)
-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);
}
#關(guān)閉 Log日志
-assumenosideeffects class android.util.Log {
? ? public static *** d(...);
? ? public static *** v(...);
? ? public static *** i(...);
? ? public static *** e(...);
? ? public static *** w(...);
}
-dontoptimize不要配置,不然將會關(guān)閉優(yōu)化,導(dǎo)致日志語句不會被優(yōu)化掉。
#避免資源混淆
-keep class **.R$* {*;}
#避免layout中onclick方法(android:onclick="onClick")混淆
-keepclassmembers class * extends android.app.Activity{
? ? public void *(android.view.View);
}
#避免回調(diào)函數(shù) onXXEvent 混淆
-keepclassmembers class * {
? ? void *(*Event);
}
#避免混淆枚舉類
-keepclassmembers enum * {
? ? public static **[] values();
? ? public static ** valueOf(java.lang.String);
}
#Natvie 方法不混淆
-keepclasseswithmembernames class * {
? ? native <methods>;
}
#避免Parcelable混淆
-keep class * implements android.os.Parcelable {
? public static final android.os.Parcelable$Creator *;
}
#避免Serializable接口的子類中指定的某些成員變量和方法混淆
-keepclassmembers class * implements java.io.Serializable {
? ? static final long serialVersionUID;
? ? private static final java.io.ObjectStreamField[] serialPersistentFields;
? ? !static !transient <fields>;
? ? private void writeObject(java.io.ObjectOutputStream);
? ? private void readObject(java.io.ObjectInputStream);
? ? java.lang.Object writeReplace();
? ? java.lang.Object readResolve();
}
#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);
}
#ButterKnife混淆配置
-keep class butterknife.** { *; }
-dontwarn butterknife.internal.**
-keep class **$$ViewBinder { *; }
-keepclasseswithmembernames class * {
? ? @butterknife.* <fields>;
}
-keepclasseswithmembernames class * {
? ? @butterknife.* <methods>;
}
#OkHttp3混淆配置
-dontwarn com.squareup.okhttp3.**
-keep class com.squareup.okhttp3.** { *;}
-dontwarn okio.**
#Retrofit2混淆配置
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepattributes Signature
-keepattributes Exceptions
#RxJava、RxAndroid混淆配置
-dontwarn sun.misc.**
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
? long producerIndex;
? long consumerIndex;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
? ? rx.internal.util.atomic.LinkedQueueNode producerNode;
}
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
? ? rx.internal.util.atomic.LinkedQueueNode consumerNode;
}
#Glide混淆配置
#Glide 3
-keep public class * implements com.bumptech.glide.module.GlideModule
-keep public enum com.bumptech.glide.load.resource.bitmap.ImageHeaderParser$** {
? **[] $VALUES;
? public *;
}
#Glide 4
-keep public class * implements com.bumptech.glide.module.AppGlideModule
-keep public class * implements com.bumptech.glide.module.LibraryGlideModule
-keep public enum com.bumptech.glide.load.ImageHeaderParser$** {
? **[] $VALUES;
? public *;
}
#Picasso混淆配置
-keep class com.parse.*{ *; }
-dontwarn com.parse.**
-dontwarn com.squareup.picasso.**
-keepclasseswithmembernames class * {
? ? native <methods>;
}
#Fresco混淆配置
# Keep our interfaces so they can be used by other ProGuard rules.
# See http://sourceforge.net/p/proguard/bugs/466/
-keep,allowobfuscation @interface com.facebook.common.internal.DoNotStrip
-keep,allowobfuscation @interface com.facebook.soloader.DoNotOptimize
# Do not strip any method/class that is annotated with @DoNotStrip
-keep @com.facebook.common.internal.DoNotStrip class *
-keepclassmembers class * {
? ? @com.facebook.common.internal.DoNotStrip *;
}
# Do not strip any method/class that is annotated with @DoNotOptimize
-keep @com.facebook.soloader.DoNotOptimize class *
-keepclassmembers class * {
? ? @com.facebook.soloader.DoNotOptimize *;
}
# Keep native methods
-keepclassmembers class * {
? ? native <methods>;
}
-dontwarn okio.**
-dontwarn com.squareup.okhttp.**
-dontwarn okhttp3.**
-dontwarn javax.annotation.**
-dontwarn com.android.volley.toolbox.**
-dontwarn com.facebook.infer.**
#Fastjson混淆配置
-dontwarn com.alibaba.fastjson.**
-keep class com.alibaba.fastjson.**{*; }
#Gson混淆配置
-keep class com.google.gson.** {*;}
-keep class com.google.**{*;}
-keep class sun.misc.Unsafe { *; }
-keep class com.google.gson.stream.** { *; }
-keep class com.google.gson.examples.android.model.** { *; }
#Banner混淆配置
-keep class com.youth.banner.** {
? ? *;
}
#GreenDao混淆配置
GreenDAO 2:
-keep class de.greenrobot.dao.** {*;}
-keepclassmembers class * extends de.greenrobot.dao.AbstractDao {
? ? public static Java.lang.String TABLENAME;
}
-keep class **$Properties
GreenDAO 3:
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties
# If you do not use SQLCipher:
-dontwarn org.greenrobot.greendao.database.**
# If you do not use Rx:
-dontwarn rx.**
#百度定位混淆配置
-keep class vi.com.gdi.** { *; }
-keep public class com.baidu.** {*;}
-keep public class com.mobclick.** {*;}
-dontwarn com.baidu.mapapi.utils.*
-dontwarn com.baidu.platform.comapi.b.*
-dontwarn com.baidu.platform.comapi.map.*
#百度地圖混淆配置
-keep class com.baidu.** {*;}
-keep class vi.com.** {*;}
-dontwarn com.baidu.**
#高徳地圖混淆配置
-dontwarn com.amap.api.**
-dontwarn com.a.a.**
-dontwarn com.autonavi.**
-keep class com.amap.api.**? {*;}
-keep class com.autonavi.**? {*;}
-keep class com.a.a.**? {*;}
#Bugly混淆配置
-dontwarn com.tencent.bugly.**
-keep public class com.tencent.bugly.**{*;}
#EventBus混淆配置
EventBus 2:
-keepclassmembers class ** {
? ? public void onEvent*(***);
}
# Only required if you use AsyncExecutor
-keepclassmembers class * extends de.greenrobot.event.util.ThrowableFailureEvent {
? ? <init>(java.lang.Throwable);
}
EventBus 3:
-keepattributes *Annotation*
-keepclassmembers class ** {
? ? @org.greenrobot.eventbus.Subscribe <methods>;
}
-keep enum org.greenrobot.eventbus.ThreadMode { *; }
# Only required if you use AsyncExecutor
-keepclassmembers class * extends org.greenrobot.eventbus.util.ThrowableFailureEvent {
? ? <init>(java.lang.Throwable);
}
#友盟分享混淆配置
-dontshrink
-dontoptimize
-dontwarn com.google.android.maps.**
-dontwarn android.webkit.WebView
-dontwarn com.umeng.**
-dontwarn com.tencent.weibo.sdk.**
-dontwarn com.facebook.**
-keep public class javax.**
-keep public class android.webkit.**
-dontwarn android.support.v4.**
-keep enum com.facebook.**
-keepattributes Exceptions,InnerClasses,Signature
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keep public interface com.facebook.**
-keep public interface com.tencent.**
-keep public interface com.umeng.socialize.**
-keep public interface com.umeng.socialize.sensor.**
-keep public interface com.umeng.scrshot.**
-keep public class com.umeng.socialize.* {*;}
-keep class com.facebook.**
-keep class com.facebook.** { *; }
-keep class com.umeng.scrshot.**
-keep public class com.tencent.** {*;}
-keep class com.umeng.socialize.sensor.**
-keep class com.umeng.socialize.handler.**
-keep class com.umeng.socialize.handler.*
-keep class com.umeng.weixin.handler.**
-keep class com.umeng.weixin.handler.*
-keep class com.umeng.qq.handler.**
-keep class com.umeng.qq.handler.*
-keep class UMMoreHandler{*;}
-keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;}
-keep class com.tencent.mm.sdk.modelmsg.** implements com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;}
-keep class im.yixin.sdk.api.YXMessage {*;}
-keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}
-keep class com.tencent.mm.sdk.** {
? *;
}
-keep class com.tencent.mm.opensdk.** {
? *;
}
-keep class com.tencent.wxop.** {
? *;
}
-keep class com.tencent.mm.sdk.** {
? *;
}
-dontwarn twitter4j.**
-keep class twitter4j.** { *; }
-keep class com.tencent.** {*;}
-dontwarn com.tencent.**
-keep class com.kakao.** {*;}
-dontwarn com.kakao.**
-keep public class com.umeng.com.umeng.soexample.R$*{
? ? public static final int *;
}
-keep public class com.linkedin.android.mobilesdk.R$*{
? ? public static final int *;
}
-keepclassmembers enum * {
? ? public static **[] values();
? ? public static ** valueOf(java.lang.String);
}
-keep class com.tencent.open.TDialog$*
-keep class com.tencent.open.TDialog$* {*;}
-keep class com.tencent.open.PKDialog
-keep class com.tencent.open.PKDialog {*;}
-keep class com.tencent.open.PKDialog$*
-keep class com.tencent.open.PKDialog$* {*;}
-keep class com.umeng.socialize.impl.ImageImpl {*;}
-keep class com.sina.** {*;}
-dontwarn com.sina.**
-keep class? com.alipay.share.sdk.** {
? *;
}
-keepnames class * implements android.os.Parcelable {
? ? public static final ** CREATOR;
}
-keep class com.linkedin.** { *; }
-keep class com.android.dingtalk.share.ddsharemodule.** { *; }
-keepattributes Signature
#友盟推送混淆配置
-dontwarn com.umeng.**
-dontwarn com.taobao.**
-dontwarn anet.channel.**
-dontwarn anetwork.channel.**
-dontwarn org.android.**
-dontwarn org.apache.thrift.**
-dontwarn com.xiaomi.**
-dontwarn com.huawei.**
-dontwarn com.meizu.**
-keepattributes *Annotation*
-keep class com.taobao.** {*;}
-keep class org.android.** {*;}
-keep class anet.channel.** {*;}
-keep class com.umeng.** {*;}
-keep class com.xiaomi.** {*;}
-keep class com.huawei.** {*;}
-keep class com.meizu.** {*;}
-keep class org.apache.thrift.** {*;}
-keep class com.alibaba.sdk.android.**{*;}
-keep class com.ut.**{*;}
-keep class com.ta.**{*;}
-keep public class **.R$*{
? public static final int *;
}